我将我正在处理的统一项目导入到Android,以便摆脱READ_PHONE_STATE和WRITE_EXTERNAL_STORAGE权限,unity 2017.2自动添加到APK中。
在将build.gradle版本从2.1.0更改为3.0.0后,我成功地将该项目导入到AndroidStudio3.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;
我的统一项目有以下插件:
请看一下我的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
我希望我能找到一个答案,因为我的工作现在正因为这个而暂停。谢谢拉米·易卜拉欣
发布于 2017-12-02 00:45:36
(我是Firebase C++ / Unity的开发人员)
听起来你达到了Dex的极限。有一种在资产中使用“分级预构建”的实验性方法->Google->Android>Settings菜单选项。
然而,这仍然是实验性的。如果它不能工作,当前建议的工作流是将构建系统设置为分级,选择“导出”,将您的项目导出到gradle,在生成的gradle生成中启用proguard剥除,然后从那里构建您的项目。
https://stackoverflow.com/questions/47080199
复制相似问题