Android Studio 3.0 beta 3.2 canary: 多个dex文件定义了Lcom/google/android/gms/internal/zzasy;

4

我将Android Studio 3.0从Canary 6升级到Beta 3.2,然后多次dex问题突然停止了。而且我已经根据此链接处理了多个dex配置:https://developer.android.com/studio/build/multidex.html同时,我还将构建工具版本更新为26.0.1,并且所有的Firebase和Play Service都有相同的版本,即11.2.0。

 Error:Error converting bytecode to dex:
    Cause: com.android.dex.DexException: Multiple dex files define 
    Lcom/google/android/gms/internal/zzasy;
    Error:com.android.dex.DexException: Multiple dex files define 
    Lcom/google/android/gms/internal/zzasy;
    Error:  at 
    com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
    Error:  at 
    com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
    Error:  at 
    com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
    Error:  at 
    com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    Error:  at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
    Error:  at 
 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
    Error:  at 
 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
    Error:  at 
java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
    Error:  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    Error:  at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    Error:  at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    Error:  at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
    Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzass;
    Error:com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzass;
    Error:  at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
    Error:  at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
    Error:  at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
    Error:  at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    Error:  at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
    Error:  at 
 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
    Error:  at 
 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
    Error:  at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
    Error:  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    Error:  at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    Error:  at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    Error:  at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
    Error:Execution failed for task 
    ':app:transformDexArchiveWithDexMergerForAkashDebug'.
    > com.android.build.api.transform.TransformException: 
    com.android.dex.DexException: Multiple dex files define 
    Lcom/google/android/gms/internal/zzasy;

请发布您的 build.gradle 文件。 - Gabriele Mariotti
1个回答

4
这是由于play services依赖项的更新所致。随着Android Studio 3.0及以上版本的推出,google的依赖项已经移至maven.google.com。同时,现在建议您使用模块级别的依赖项。例如: implementation 'com.google.android.gms:play-services-places:11.2.0' 欲了解更多信息,请参见此链接
  • So move all your dependencies to module level dependencies with v11.2.0 Add this to your build.gradle

    repositories {
       mavenCentral()
       google()
     }
    
  • Replace all your compile statement to implementation

  • Delete your .idea folder in the project and rebuild. Everything should work fine then.

如果这篇回答对您有所帮助,请接受它。 - outlander24

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接