这个问题是连续尝试克服appDebugAssemble失败构建的四天漫长痛苦之旅的后果。我通过使用术语" multidex"来查找谷歌投给我的超级大量主题/文章。但无济于事。
最近,我开始使用Android Studio 3.0 Beta 4,并相应地将SDK版本更新为Android O版本。除此之外,我还使用了AS3b4和Gradle 4.1-all,到目前为止,我非常享受新的更新。
四天前,我决定将Firebase Analytics和Messaging添加到我的项目及其向南的位置。为了简洁起见,我已经尝试了超过30种方法,建议(以及SO上接受的答案)关于如何配置MultiDex,并且由于所有都没有使构建通过,我到达了一个状态我开始相信有一种咒语施加在我身上,特别是在我将我的应用程序发布到Play商店的时候。我也阅读并重读了这篇文章https://developer.android.com/studio/build/multidex.html
毋庸置疑,但您的共同智慧将受到高度赞赏,如果出现了潜在的解决方案,我非常肯定它会阻止很多开发人员变得大胆,或者被抨击靠墙。现在关闭我的胸部,这是我的配置细节
app.gradle
apply plugin: 'com.android.application'
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
debug {
minifyEnabled false
debuggable true
useProguard false
}
}
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
dependencies {
...
implementation 'com.android.support:multidex:1.0.2'
}
apply plugin: 'com.google.gms.google-services'
自定义MyApp课程
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
期待这个丰富的人才群体能够丰富我和其他患有同样流行病的人。谢谢!
修改 完全忘了粘贴错误日志。这就是我所面对的:
出了什么问题:
任务执行失败':app:transformDexArchiveWithExternalLibsDexMergerForDebug'。
> java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex
答案 0 :(得分:1)
好吧,我想我的研究可能会持续一段时间,但我几乎感到绝望。我终于设法解决了这个问题,所以我发布它以供将来参考,因为我意识到我们中有很多人在我们的应用程序中实现MultiDexing的困难。
我的实际问题是 Google Play服务库的重复版本。我正在使用Facebook Audience Network SDK,它依赖于com.google.android.gms:play-services-ads:10.0.4
,而我的Firebase实施依赖于11.2.2。
问题在于,除非你提醒自己仔细查看你的库所依赖的依赖关系,否则你真的无法解决这个问题,因为就像@AlexLipov上面说的那样“错误日志过于通用”。我的灯泡在GitHub上从this comment点亮了。
总而言之,基本上遵循官方MultiDex guide,如果弹出类似的问题,请给出一个峰值以识别潜在的依赖冲突,然后执行以下操作以强制他们相应地使用最新版本。
implementation('com.facebook.android:audience-network-sdk:4.25.0') {
exclude group: 'com.google.android.gms'
}
值得一提的是,运行gradle --stacktrace
有助于缩小问题范围。 This might come in handy too
P.S。谢谢和亚历克斯的叮当声。