当我在 CI 机器上运行 android 构建时遇到异常。对于 CI,我们使用基于 ubuntu 的 docker 镜像。如果我在本地运行构建,那就没问题,但是当我在那里运行它时,我收到以下异常:
* What went wrong:
Execution failed for task ':Callsign:transformClassesWithMultidexlistForDevDebug'.
> com.android.build.api.transform.TransformException: Error while generating the main dex list.
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':Callsign:transformClassesWithMultidexlistForDevDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipCachedTaskExecuter.execute(SkipCachedTaskExecuter.java:103)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:66)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
at …Run Code Online (Sandbox Code Playgroud) 创建发布版本时,我的应用程序崩溃。该应用程序运行正常,突然发生了这种情况。我有这条线BaseActivity.java MultiDex.install(this);我尝试了 SO 的多种选择,但没有一个有效。该错误也没有提供足够的详细信息,或者我无法找到发生此问题的点。任何帮助将不胜感激。
这是堆栈跟踪。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.packagename, PID: 10136
java.lang.VerifyError: Verifier rejected class android.support.multidex.MultiDex: void android.support.multidex.MultiDex.<init>() failed to verify: void android.support.multidex.MultiDex.<init>(): [0x0] Constructor returning without calling superclass constructor (declaration of 'android.support.multidex.MultiDex' appears in /data/app/com.packagename-4uitso2MKAahWwylc8ZTtA==/base.apk!classes2.dex)
at android.support.multidex.MultiDex.install(MultiDex.java:95)
at com.packagename.baseactivity.BaseActivity.attachBaseContext(BaseActivity.java:43)
at android.app.Application.attach(Application.java:224)
at android.app.Instrumentation.newApplication(Instrumentation.java:1128)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1162)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6607)
at android.app.ActivityThread.access$2000(ActivityThread.java:268)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1995)
at android.os.Handler.dispatchMessage(Handler.java:109)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:7539)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
Run Code Online (Sandbox Code Playgroud)
这是我的 build.gradle
apply plugin: 'com.android.application'
android { …Run Code Online (Sandbox Code Playgroud) 一段时间后,我重新打开了一个 Android Studio 项目,并且像往常一样看到了快速构建,但现在 Android Studio (3.5) 的“安装”步骤需要几分钟,而过去需要几秒钟。
如果我在安装时打开设备 Logcat,我可以看到大量这些:
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.onSaveInstanceState(android.os.Bundle)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.onViewCreated(android.view.View, android.os.Bundle)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.onViewModelCreated()
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.removeCancelListener(com.package.base.view.BaseDialog$CancelListener)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.removeDismissListener(com.package.base.view.BaseDialog$DismissListener)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.setChildFragmentInjector(dagger.android.DispatchingAndroidInjector)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.setSharedValue(java.lang.String, java.lang.Object)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.setViewModelFactory(androidx.lifecycle.ViewModelProvider$Factory)
W/dex2oat: Method processed more …Run Code Online (Sandbox Code Playgroud) 我正在使用Android studio 1.2.2.我已经集成了地图4工作sdk,在此之后构建失败,我们在我们的项目中使用google play services lib(仅使用com.google.android.gms.tagmanager.*).现在,在集成googlemaps_sdk_m4b_lib之后,构建不会生成.在此之前
试图寻找仅包含google_play_services_lib的tagmanager片段,但不能作为依赖项使用.
构建失败,具体如下:
:nFarmers:dexDebug AGPBI:{"kind":"SIMPLE","text":"意外的顶级错误:","位置":{},"原始":"意外的顶层错误:"} AGPBI: {"kind":"SIMPLE","text":"java.lang.OutOfMemoryError:超出GC开销限制","position":{},"original":"java.lang.OutOfMemoryError:超出GC开销限制"} AGPBI:{"kind":"SIMPLE","text":"\ tat com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:371)","position":{},"original" :"\ tat com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:371)"} AGPBI:{"kind":"SIMPLE","text":"\ tat com.android.dx. cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:262)","position":{},"original":"\ tat com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:262) "} AGPBI:{"kind":"SIMPLE","text":"\ tat com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150)","position":{},"原始":"\ tat com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150)"} AGPBI:{"kind" :"SIMPLE","text":"\ tat com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124)","position":{},"original":"\ tat com. android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124)"} AGPBI:{"kind":"SIMPLE","text":"\ tat com.android.dx.cf.cst.ConstantPoolParser. getPool(ConstantPoolParser.java:115)","position":{},"original":"\ tat com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115)"} AGPBI:{" kind":"SIMPLE","text":"\ tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:482)","position":{},"original":"\ tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:482)"} AGPBI:{"kind":"SIMPLE","text":"\ tat com.android.dx.cf.direct. DirectClassFile.parse(DirectClassFile.java:406)","position":{},"original":"\ tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)"} AGPBI: {"kind":"SIMPLE","text":"\ tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary (DirectClassFile.java:388)","position":{},"original":"tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)"} AGPBI:{"kind ":"SIMPLE","text":"\ tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)","position":{},"original":"\ tat com .android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)"} AGPBI:{"kind":"SIMPLE","text":"\ tat com.android.dx.command.dexer.Main .parseClass(Main.java:764)","position":{},"original":"\ tat com.android.dx.command.dexer.Main.parseClass(Main.java:764)"} AGPBI:{ "kind":"SIMPLE","text":"\ tat com.android.dx.command.dexer.Main.access $ 1500(Main.java:85)","position":{},"original":"\tat …
我试过以下链接
http://developer.android.com/intl/es/tools/building/multidex.html
意外的顶级异常:com.android.dex.DexException:多个 dex 文件定义
com.android.build.transform.api.TransformException
Android Studio TransformException:错误:任务':app:transformClassesWithDexForDebug'的执行失败
Java 以非零退出值 2 结束 - Android Gradle
com.android.build.transform.api.TransformException
我的gradle构建文件如下。
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '23.0.1'
defaultConfig {
applicationId "appId"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
incremental true
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile files('libs/rt.jar')
compile 'com.android.support:multidex:1.0.0' …Run Code Online (Sandbox Code Playgroud) 当我为我的项目为android studio(版本2.0)构建一个APK文件时,出现错误:
错误:任务':app:transformClassesWithJarMergingForDebug'的执行失败.> com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复项:组织/阿帕奇/ oltu /的oauth2 /普通/ OAuth的$ ContentType.class
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
defaultConfig {
applicationId "com.db.android.app.denhathai"
minSdkVersion 15
targetSdkVersion 23
versionCode 14
versionName "1.2.2"
multiDexEnabled true
manifestPlaceholders = [manifestApplicationId : "${applicationId}",
onesignal_app_id : "bad49395-e355-4802-8df1-414be2d345ac",
onesignal_google_project_number: "1071797880741"]
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
dependencies {
compile fileTree(include: …Run Code Online (Sandbox Code Playgroud) 我正在研究的项目围绕180k方法.我已阅读博客和文章,其中书面,如果您将Min SDK到21,那么你就不需要MultiDex.但是,如果我MultiDex从这里删除它给我65k MultiDex错误消息.以下是我的gradle档案.我不知道我是否理解这个概念或其他东西.请指导我.
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId 'com.myapp.app'
minSdkVersion 21
targetSdkVersion 23
versionCode 59
versionName "1.0.1"
multiDexEnabled true
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
}
lintOptions {
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
Run Code Online (Sandbox Code Playgroud) 使用 运行 Espresso 测试时./gradlew connectedDebugAndroidTest,我们遇到了这个问题:
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: 方法 ID 不在 [0, 0xffff]: 65536
由于我们在主应用程序中使用 Multidex 并且只是在检测的测试中添加 Espresso 依赖项,我们不明白为什么它不起作用:·(此外,如果我们通过 IntelliJ 而不是 Gradle 运行测试,它有效:·|
顺便说一下,我们需要通过 Gradle 运行它们以在 CI 工具上自动化它们。
更多信息?在 Google 的问题跟踪器上有一个相关问题的链接:https ://issuetracker.google.com/issues/37017515 :sad:
我突然得到了以下错误.该应用程序运行良好,直到早上.从那时起我就得到了这个.我尝试从Git加载旧的提交,但是现在我遇到了同样的问题.我可以看到某些类有重复的条目,但不清楚在哪里.我检查了所有的库以找到问题但是徒劳无功.请帮忙
Error:Execution failed for task
':app:transformClassesWithMultidexlistForDebug'.
> java.io.IOException: Can't write [C:\Users\Bluetie Backup 3
i5\Downloads\Bluetie_Android_NewDesign-
Development\Bluetie_Android_NewDesign-Development\BlueTieAndroid-
master\app\build\intermediates\multi-dex\debug\componentClasses.jar] (Can't
read [C:\Users\Bluetie Backup 3 i5\.gradle\caches\transforms-1\files-
1.1\support-core-ui-27.1.0.aar\781c80d72f0634c3cfc30b7ab8014102\jars\classes.jar(;;;;;;**.class)]
(Duplicate zip entry[classes.jar:android/support/design/widget/CoordinatorLayout$Behavior.class]))`
Run Code Online (Sandbox Code Playgroud)
我使用了很多库,因为我的应用程序非常以UI为中心.
这是build.gradle文件
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',
{
exclude group: 'com.android.support', module: 'support-annotations'
})
compile project(':rtp')
compile project(':pageIndicator')
compile files('libs/linkedin-j-android.jar')
//compile files('libs/commons-codec-1.3.jar')
//compile files('libs/signpost-core-1.2.1.1.jar')
compile project(':imagepicker')
compile project(':swipflingview')
compile project(':linkedin-sdk')
compile 'com.android.support:multidex:1.0.2'
//noinspection GradleCompatible
compile 'com.google.firebase:firebase-core:11.0.2'
compile 'com.google.firebase:firebase-crash:11.0.2'
/* compile 'com.google.firebase:firebase-auth:11.0.2'*/
compile 'com.google.android.gms:play-services-analytics:11.0.2'
compile 'com.google.firebase:firebase-messaging:11.0.2'
compile 'com.google.android.gms:play-services-location:11.0.2'
/*compile 'com.google.android.gms:play-services-ads:11.0.2'*/
compile 'com.google.android.gms:play-services-auth:11.0.2' …Run Code Online (Sandbox Code Playgroud) 我用以下gradle文件创建了一个新的android项目:
android {
...
dexOptions {
javaMaxHeapSize "4g"
}
...
}
dependencies {
...
compile 'com.linkedin.dexmaker:dexmaker-mockito:2.16.0'
...
}
Run Code Online (Sandbox Code Playgroud)
但是当我构建我的应用程序时,我得到:
在项目':app'中与依赖'com.android.support:multidex'冲突.app(1.0.3)和测试app(1.0.1)的已解决版本有所不同.有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict.
我该如何解决这个问题?
android ×10
android-multidex ×10
gradle ×3
build.gradle ×2
proguard ×2
dex ×1
dex2oat ×1
java ×1
performance ×1