我正在尝试首次使用“构建应用程序捆绑包(Google Play)”来编译我的项目。但是我得到了error while merging dex archives
。
我相信这是由于我的某些插件使用的亚马逊模块的版本不同
控制台中显示的第一个错误:
D8: Program type already present: com.amazon.ags.BuildConfig
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
当我搜索com.amazon.ags.BuildConfig
时,什么也没找到。 (但我的假设可能是错误的)
我试图通过将mainTemplate.gradle
添加到我的项目中来启用multiDex
defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
applicationId '**APPLICATIONID**'
multiDexEnabled true
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
}
但是我仍然遇到相同的错误,并且我没有机会知道在构建时是否真的包括了新的gradle文件,或者unity只是忽略了它。
这是在构建失败时弹出的错误:
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
C:\Users\path-to-project\unity\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\57,
C:\Users\path-to-project\unity\Temp\gradleOut\build\intermediates\transforms\externalLibsDexMerger\release\0,
C:\Users\path-to-project\unity\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\52.jar,
C:\Users\path-to-project\unity\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\54.jar
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
我最近看到很多人通过删除统一广告和/或Google Ads插件并重新启用来解决类似错误,但我从未使用过google ads,但是我尝试删除统一广告插件,但仍然没有雪茄,我还尝试过使用不同版本的统一广告插件,无论是资产商店的版本还是“内置扩展程序”都没有用。
我一直在和一些人here进行讨论,但是我尝试了每个人提供的解决方案,但都没有运气。
关于如何找出导致此问题的插件以及如何解决此问题的任何建议?
答案 0 :(得分:0)
the thread from unity forum中的某个人终于发布了有效的解决方案。我也会在这里分享它,因此希望与此问题相关的每个人都不必花30个小时蒙着眼睛,像我一样解决dex合并冲突。
事实证明,在新的新版本中,publish settings
中还有一些其他选项需要设置!
引用 RealPpTheBest 的答案
转到播放器设置>项目设置>缩小,在那里 将是Release的一个选项,将其设置为Gradle。
由于某种原因,选择gradle build时,这两个不会自动切换,也许在某些情况下则不必。但是将minify设置为Grable (experimental)
可以完全解决我在更新单位后遇到的所有构建错误。
答案 1 :(得分:-1)
我也遇到了这个错误。我所做的是,我将最低API级别更改为棉花糖,还检查了构建设置中的开发构建。它对我有用。