【问题标题】:Unity Project in Android Studio 3.0 Build Error : com.android.dex.DexException: Multiple dex files define Lcom/google/games/bridge/BuildConfig;Android Studio 3.0 中的 Unity 项目构建错误:com.android.dex.DexException:多个 dex 文件定义 Lcom/google/games/bridge/BuildConfig;
【发布时间】:2017-11-02 16:28:46
【问题描述】:

我将我正在开发的 unity 项目导入 Android Studio,以便摆脱 READ_PHONE_STATE 和 WRITE_EXTERNAL_STORAGE 权限,unity 2017.2 会自动恼人地添加到 APK 构建中。

在将 build.gradle 版本从 2.1.0 更改为 3.0.0 后,我成功地将项目导入 Android Studio 3.0。清理项目,现在我可以构建了。

问题是我无法构建。我遇到了错误:

Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/games/bridge/BuildConfig;

Error:Execution failed for task ':transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/google/games/bridge/BuildConfig;

Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/tappx/sdk/android/BuildConfig;

Error:Execution failed for task ':transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/tappx/sdk/android/BuildConfig;

我的统一项目添加了以下插件:

  • PlayGames for unity v 0.9.42
  • Firebase SDK(分析、动态链接、通知、remoteConfig)v 4.2.1
  • IronSource SDK
  • TappX SDK

请查看我的 build.gradle 文件

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

allprojects {
   repositories {
      flatDir {
        dirs 'libs'
      }
   }
}

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name: 'Admob_appbrain-sdk-13.22', ext:'aar')
    compile(name: 'common', ext:'aar')
    compile(name: 'firebase-analytics-11.4.2', ext:'aar')
    compile(name: 'firebase-analytics-impl-11.4.2', ext:'aar')
    compile(name: 'firebase-config-11.4.2', ext:'aar')
    compile(name: 'firebase-dynamic-links-11.4.2', ext:'aar')
    compile(name: 'firebase-messaging-11.4.2', ext:'aar')
    compile(name: 'GoogleAIDL', ext:'aar')
    compile(name: 'GooglePlay', ext:'aar')
    compile(name: 'play-services-appinvite-11.4.2', ext:'aar')
    compile(name: 'play-services-auth-11.4.2', ext:'aar')
    compile(name: 'play-services-auth-base-11.4.2', ext:'aar')
    compile(name: 'play-services-base-11.4.2', ext:'aar')
    compile(name: 'play-services-basement-11.4.2', ext:'aar')
    compile(name: 'play-services-drive-11.4.2', ext:'aar')
    compile(name: 'play-services-games-11.4.2', ext:'aar')
    compile(name: 'play-services-nearby-11.4.2', ext:'aar')
    compile(name: 'play-services-tasks-11.4.2', ext:'aar')
    compile(name: 'support-compat-25.2.0', ext:'aar')
    compile(name: 'support-core-ui-25.2.0', ext:'aar')
    compile(name: 'support-core-utils-25.2.0', ext:'aar')
    compile(name: 'support-fragment-25.2.0', ext:'aar')
    compile(name: 'support-media-compat-25.2.0', ext:'aar')
    compile(name: 'support-v4-25.2.0', ext:'aar')
    compile project(':Firebase')
    compile project(':firebase-analytics-impl-license-11.4.2')
    compile project(':firebase-analytics-license-11.4.2')
    compile project(':firebase-analytics-unity-4.2.1')
    compile project(':firebase-app-unity-4.2.1')
    compile project(':firebase-common-11.4.2')
    compile project(':firebase-common-license-11.4.2')
    compile project(':firebase-config-license-11.4.2')
    compile project(':firebase-config-unity-4.2.1')
    compile project(':firebase-core-11.4.2')
    compile project(':firebase-dynamic-links-license-11.4.2')
    compile project(':firebase-dynamic-links-unity-4.2.1')
    compile project(':firebase-iid-11.4.2')
    compile project(':firebase-iid-license-11.4.2')
    compile project(':firebase-messaging-license-11.4.2')
    compile project(':firebase-messaging-unity-4.2.1')
    compile project(':GooglePlayGamesManifest.plugin')
    compile project(':gpgs-plugin-support-0.9.42')
    compile project(':IronSource')
    compile project(':play-services-appinvite-license-11.4.2')
    compile project(':play-services-base-license-11.4.2')
    compile project(':play-services-basement-license-11.4.2')
    compile project(':play-services-tasks-license-11.4.2')
    compile project(':TappxSDK')
}

android {
    compileSdkVersion 25
    buildToolsVersion '27.0.0'

    defaultConfig {
        targetSdkVersion 25
        applicationId 'play.TheEgg'
    }

    lintOptions {


abortOnError false
}

aaptOptions {
    noCompress '.unity3d', '.ress', '.resource', '.obb'
}

signingConfigs { release {
    storeFile file('C:/Keystores/user.keystore')
    storePassword 'STORE_PASS'
    keyAlias 'KEY_ALIAS'
    keyPassword 'KEY_PASS'
} }

buildTypes {
    debug {
        minifyEnabled false
        useProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
        jniDebuggable true
    }
    release {
        minifyEnabled true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
        signingConfig signingConfigs.release
    }
}

}

我尝试添加 multiDexEnabled = true - 但它对输出没有任何影响。

这是成绩控制台日志的最后一部分:

:firebase-core-11.4.2:mergeDebugShaders UP-TO-DATE
:firebase-core-11.4.2:compileDebugShaders UP-TO-DATE
:firebase-core-11.4.2:generateDebugAssets UP-TO-DATE
:firebase-core-11.4.2:mergeDebugAssets UP-TO-DATE
:firebase-dynamic-links-license-11.4.2:mergeDebugShaders UP-TO-DATE
:firebase-dynamic-links-license-11.4.2:compileDebugShaders UP-TO-DATE
:firebase-dynamic-links-license-11.4.2:generateDebugAssets UP-TO-DATE
:firebase-dynamic-links-license-11.4.2:mergeDebugAssets UP-TO-DATE
:firebase-dynamic-links-unity-4.2.1:mergeDebugShaders UP-TO-DATE
:firebase-dynamic-links-unity-4.2.1:compileDebugShaders UP-TO-DATE
:firebase-dynamic-links-unity-4.2.1:generateDebugAssets UP-TO-DATE
:firebase-dynamic-links-unity-4.2.1:mergeDebugAssets UP-TO-DATE
:firebase-iid-11.4.2:mergeDebugShaders UP-TO-DATE
:firebase-iid-11.4.2:compileDebugShaders UP-TO-DATE
:firebase-iid-11.4.2:generateDebugAssets UP-TO-DATE
:firebase-iid-11.4.2:mergeDebugAssets UP-TO-DATE
:firebase-iid-license-11.4.2:mergeDebugShaders UP-TO-DATE
:firebase-iid-license-11.4.2:compileDebugShaders UP-TO-DATE
:firebase-iid-license-11.4.2:generateDebugAssets UP-TO-DATE
:firebase-iid-license-11.4.2:mergeDebugAssets UP-TO-DATE
:firebase-messaging-license-11.4.2:mergeDebugShaders UP-TO-DATE
:firebase-messaging-license-11.4.2:compileDebugShaders UP-TO-DATE
:firebase-messaging-license-11.4.2:generateDebugAssets UP-TO-DATE
:firebase-messaging-license-11.4.2:mergeDebugAssets UP-TO-DATE
:firebase-messaging-unity-4.2.1:mergeDebugShaders UP-TO-DATE
:firebase-messaging-unity-4.2.1:compileDebugShaders UP-TO-DATE
:firebase-messaging-unity-4.2.1:generateDebugAssets UP-TO-DATE
:firebase-messaging-unity-4.2.1:mergeDebugAssets UP-TO-DATE
:gpgs-plugin-support-0.9.42:mergeDebugShaders
:gpgs-plugin-support-0.9.42:compileDebugShaders
:gpgs-plugin-support-0.9.42:generateDebugAssets
:gpgs-plugin-support-0.9.42:mergeDebugAssets
:play-services-appinvite-license-11.4.2:mergeDebugShaders UP-TO-DATE
:play-services-appinvite-license-11.4.2:compileDebugShaders UP-TO-DATE
:play-services-appinvite-license-11.4.2:generateDebugAssets UP-TO-DATE
:play-services-appinvite-license-11.4.2:mergeDebugAssets UP-TO-DATE
:play-services-base-license-11.4.2:mergeDebugShaders UP-TO-DATE
:play-services-base-license-11.4.2:compileDebugShaders UP-TO-DATE
:play-services-base-license-11.4.2:generateDebugAssets UP-TO-DATE
:play-services-base-license-11.4.2:mergeDebugAssets UP-TO-DATE
:play-services-basement-license-11.4.2:mergeDebugShaders UP-TO-DATE
:play-services-basement-license-11.4.2:compileDebugShaders UP-TO-DATE
:play-services-basement-license-11.4.2:generateDebugAssets UP-TO-DATE
:play-services-basement-license-11.4.2:mergeDebugAssets UP-TO-DATE
:play-services-tasks-license-11.4.2:mergeDebugShaders UP-TO-DATE
:play-services-tasks-license-11.4.2:compileDebugShaders UP-TO-DATE
:play-services-tasks-license-11.4.2:generateDebugAssets UP-TO-DATE
:play-services-tasks-license-11.4.2:mergeDebugAssets UP-TO-DATE
:mergeDebugAssets
:transformClassesWithDexBuilderForDebug
:transformDexArchiveWithExternalLibsDexMergerForDebug
:transformDexArchiveWithDexMergerForDebug
AGPBI: {"kind":"error","text":"Error converting bytecode to dex:\nCause: com.android.dex.DexException: Multiple dex files define Lcom/google/games/bridge/BuildConfig;","sources":[{}],"original":"UNEXPECTED TOP-LEVEL EXCEPTION:\ncom.android.dex.DexException: Multiple dex files define Lcom/google/games/bridge/BuildConfig;\n","tool":"Dex"}
AGPBI: {"kind":"error","text":"com.android.dex.DexException: Multiple dex files define Lcom/google/games/bridge/BuildConfig;","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:198)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)","sources":[{}]}

 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/google/games/bridge/BuildConfig;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 13s

404 actionable tasks: 12 executed, 392 up-to-date

我希望我能找到答案,因为我的工作因此而被搁置。 谢谢 拉米·易卜拉欣

【问题讨论】:

    标签: android-studio unity3d apk build.gradle google-play-games


    【解决方案1】:

    (我是 Firebase C++ / Unity 团队的开发人员)

    听起来你达到了敏捷上限。在 Assets->Google Play Services->Android Settings->Settings 菜单选项中有一种使用“Gradle Prebuild”的实验方法。

    但是,这仍然是实验性的。如果它不起作用,当前建议的工作流程是将构建系统设置为 gradle,选择“导出”,将您的项目导出到 gradle,在生成的 gradle 构建中启用 proguard 剥离,然后从那里构建您的项目。

    【讨论】:

    • 非常感谢。尝试“Gradle Prebuild”并构建成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多