3

我最近升级到 Unity 5.6,希望利用 Gradle 构建管道(解决讨厌的 dex 限制)。

经过几天的配置,我遇到了这个令人头疼的问题。这是 Unity 编辑器控制台中显示的错误:

Execution failed for task ':transformClassesWithJarMergingForRelease'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: my/unity/game/BuildConfig.class

因此,似乎某些插件/外部项目包含具有完全相同的包名称的 BuildConfig 类文件(如文件结构所示,以及为什么我必须在主项目 gradle 中将 enforceUniquePackageName 设置为 false)。

在 Android Studio 中,查找 BuildConfig 文件时,我注意到两个不同的项目具有相同的包名。其中一个项目肯定是针对主要的 Unity 项目,而另一个是针对自动包含的项目:unity-android-resources。

有没有办法我可以以某种方式:

  • 通过主 gradle 文件从自动生成的 unity-android-resources 项目中排除 BuildConfig.java?或者,
  • 有什么办法可以更改为 unity-android-resources 自动生成的 BuildConfig.java 文件的包名称吗?

如果有帮助,这里是依赖项(不,似乎我不能删除 unity-android-resources 依赖项,因为由于缺少一些图标资源,构建失败):

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile(name: 'GoogleAIDL', ext:'aar')
     compile(name: 'GooglePlay', ext:'aar')
     compile(name: 'appcompat-v7-23.4.0', ext:'aar')
     compile(name: 'cardview-v7-23.4.0', ext:'aar')
     compile(name: 'common', ext:'aar')
     compile(name: 'facebook-android-sdk-4.23.0', ext:'aar')
     compile(name: 'facebook-android-wrapper-7.10.0', ext:'aar')
     compile(name: 'play-services-ads-10.0.1', ext:'aar')
     compile(name: 'play-services-auth-10.0.1', ext:'aar')
     compile(name: 'play-services-auth-base-10.0.1', ext:'aar')
     compile(name: 'play-services-base-10.0.1', ext:'aar')
     compile(name: 'play-services-basement-10.0.1', ext:'aar')
     compile(name: 'play-services-drive-10.0.1', ext:'aar')
     compile(name: 'play-services-games-10.0.1', ext:'aar')
     compile(name: 'play-services-iid-10.0.1', ext:'aar')
     compile(name: 'play-services-nearby-10.0.1', ext:'aar')
     compile(name: 'play-services-tasks-10.0.1', ext:'aar')
     compile(name: 'support-v4-24.0.0', ext:'aar')
     compile project(':Etcetera_lib')
     compile project(':Flurry_lib')
     compile project(':MainLibProj')
     compile project(':PermissionCheckPlugin')
     compile project(':SwrvePush_lib')
     compile project(':fyber-unityads-1.5.6-r3')
     compile project(':unity-android-resources') // <- possible cause of error
}

感谢您的帮助。

4

0 回答 0