Unity Gradle构建-合并dex存档时出错

时间:2019-06-16 22:40:41

标签: android unity3d gradle build.gradle

我正在尝试首次使用“构建应用程序捆绑包(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进行讨论,但是我尝试了每个人提供的解决方案,但都没有运气。

关于如何找出导致此问题的插件以及如何解决此问题的任何建议?

2 个答案:

答案 0 :(得分:0)

the thread from unity forum中的某个人终于发布了有效的解决方案。我也会在这里分享它,因此希望与此问题相关的每个人都不必花30个小时蒙着眼睛,像我一样解决dex合并冲突。

事实证明,在新的新版本中,publish settings中还有一些其他选项需要设置!

引用 RealPpTheBest 的答案

  

转到播放器设置>项目设置>缩小,在那里   将是Release的一个选项,将其设置为Gradle。

enter image description here

由于某种原因,选择gradle build时,这两个不会自动切换,也许在某些情况下则不必。但是将minify设置为Grable (experimental)可以完全解决我在更新单位后遇到的所有构建错误。

答案 1 :(得分:-1)

我也遇到了这个错误。我所做的是,我将最低API级别更改为棉花糖,还检查了构建设置中的开发构建。它对我有用。