因 DexArchiveMergerException 失败 demo:transformDexArchiveWithExternalLibsDexMergerForMockDebug

Fail demo:transformDexArchiveWithExternalLibsDexMergerForMockDebug with a DexArchiveMergerException

重建后我得到:

Error:Execution failed for task ':demo:transformDexArchiveWithExternalLibsDexMergerForMockDebug'.
> com.android.builder.dexing.DexArchiveMergerException: com.android.tools.r8.errors.CompilationError: Program type already present: com.google.android.gms.common.internal.zzag

该错误消息是什么意思?怎么了?

针对此错误的建议 workaround 是删除项目中的 ./gradle 文件夹或删除所有 build 文件夹和 gradle 缓存.

其他参考资料:

  • Dex error On Android Studio 3.0 Beta4
  1. Delete the .gradle directory.

  2. Run your app again.

Notes

  • The .gradle directory is in your project's root folder. (You may have to show hidden files first.)
  • I have to do this every time I update a dependency module using Android 3.0.

希望对您有所帮助!

当我用(较旧的)compile 替换 gradle implementation 指令时,它起作用了。

此错误(以及任何其他 Program type already present: com.google.android.gms.common.internal.xxxxxx 错误)可能是由不同的 Play 服务和 Firebase 版本引起的。确保 all implementation 'com.google.android.gms:xxxx:12.0.0 和所有 implementation 'com.google.firebase:xxxxxx:12.0.0' 在此示例中具有相同的版本 (12.0.0)。