Android-错误:任务':app:transformClassesWithDexForRelease'的执行失败


191

问题是,debug当我切换到release模式时,我能够运行我的应用程序,但切换到模式时,它会失败。

例外:

**FAILURE: Build failed with an exception.**
> Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

当我用stacktrace运行gradle build命令时,这就是我得到的

./gradlew app:transformClassesWithDexForRelease --stacktrace

> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

*Exception is:*

>org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForRelease'.
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
            at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
            at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
            at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
            at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
            at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
            at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
            at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
            at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
            at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
            at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
            at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
            at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
            at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
            at org.gradle.internal.Factories$1.create(Factories.java:22)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
            at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
            at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
            at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
            at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
            at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
            at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
            at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
            at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
            at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
            at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)
            at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
            at org.gradle.util.Swapper.swap(Swapper.java:38)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
            at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
            at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
            at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:54)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:57)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:47)
            at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173)
            at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:244)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:231)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
            ... 68 more
    Caused by: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:422)
            at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:178)
            at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:174)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:55)
            ... 77 more
    Caused by: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.java:1472)
            at com.android.builder.core.AndroidBuilder.convertByteCode(AndroidBuilder.java:1389)
            at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:250)
            ... 80 more
    Caused by: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.java:1456)
            ... 82 more
    Caused by: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:43)
            at com.android.builder.core.AndroidBuilder$2.call(AndroidBuilder.java:1464)
            at com.android.builder.core.AndroidBuilder$2.call(AndroidBuilder.java:1456)
    Caused by: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367)
            at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:41)
            ... 2 more

我在用

  • Android Studio 2.0 Beta 6
  • Java版本:Java(TM)SE运行时环境(内部版本1.8.0_73-b02)
  • Gradle版本:com.android.tools.build:gradle:2.0.0-beta6
  • 我启用了Multidex

我的build.gradle文件

apply plugin: 'com.android.application'
apply plugin: 'com.getkeepsafe.dexcount'

android {

    def VERSION_CODE = 52
    def VERSION_NAME = "1.0"
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {
        applicationId "com.example.app"
        manifestPlaceholders = [appName: "Personal App"]
        minSdkVersion 14
        targetSdkVersion 23
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
        versionCode VERSION_CODE
        versionName VERSION_NAME

        // Enabling multidex support.
        multiDexEnabled true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
        encoding = 'UTF-8'
    }

    signingConfigs {
        livekeystore {
            storeFile file('../key.jks')
            keyAlias 'livekeystore'
            keyPassword '123asd'
            storePassword '123asd'
        }
    }


    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.burgerking

            manifestPlaceholders = [googleMapsKey: "@string/release_google_map_key", appNameSuffix: ""]
        }

        debug {
            applicationIdSuffix '.dev'
            debuggable true
            minifyEnabled false
            shrinkResources false
            zipAlignEnabled false

            manifestPlaceholders = [googleMapsKey: "@string/debug_google_map_key", appNameSuffix: ' (Dev-' + VERSION_CODE + ')']

        }
    }

    dexOptions {
        incremental true
        javaMaxHeapSize "4g" // 2g should be also OK
    }

    useLibrary 'org.apache.http.legacy'

}

repositories {
    maven { url 'https://mint.splunk.com/gradle/' }
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.4.2'
        classpath 'com.newrelic.agent.android:agent-gradle-plugin:4.244.0'
    }
}


dependencies {
    compile 'com.google.code.gson:gson:2.4'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile 'com.android.support:recyclerview-v7:23.2.0'
    compile 'com.android.support:cardview-v7:23.2.0'
    compile 'com.android.support:design:23.2.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.google.android.gms:play-services-base:8.4.0'
    compile 'com.google.android.gms:play-services-location:8.4.0'
    compile 'com.google.android.gms:play-services-analytics:8.4.0'
    compile 'com.google.android.gms:play-services-maps:8.4.0'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'com.googlecode.libphonenumber:libphonenumber:7.0.5'
    compile 'com.facebook.android:facebook-android-sdk:4.1.1'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup:pollexor:2.0.2'
    compile 'com.makeramen:roundedimageview:2.1.0'
    compile 'com.mcxiaoke.volley:library:1.0.16@aar'
    compile files('libs/now-auth-api.jar')
    compile 'com.jakewharton:butterknife:5.1.2'
    compile 'com.github.ksoichiro:android-observablescrollview:1.2.0'
    compile 'io.card:android-sdk:5.3.0'
    compile 'com.appboy:android-sdk-ui:1.10.3'
    testCompile 'junit:junit:4.11'
    testCompile('org.mockito:mockito-core:1.9.5') {
        exclude group: 'org.hamcrest'
    }
    testCompile('org.powermock:powermock-module-junit4:1.5') {
        exclude group: 'org.hamcrest'
    }
    testCompile('org.powermock:powermock-api-mockito:1.6.2') {
        exclude group: 'org.hamcrest'
    }

    compile 'me.grantland:autofittextview:0.2.1'

}

如果将其minifyEnabled true从中删除,似乎可以使我的发布版本正常工作。为什么会这样,还有另一种解决方法


您可以发布应用程序的build.gradle文件吗?
Harisewak

@Harisewak我已经更新了问题,请现在看一下
Sheraz Ahmad Khilji

是的,@ Sheraz是正确的,将minifyEnabled切换为false可以解决此问题。我在doc中阅读了这篇文章:“您必须启用minifyEnabled才能启用代码收缩功能,然后再使用rinkeResources启用资源收缩功能。如果尚未使用minifyEnabled,请确保在添加rinkResources之前可以正常使用,因为您可能必须编辑proguard-rules.pro文件,以确保通过反射等方式访问的任何方法都列为keep规则。文件”(tools.android.com/tech-docs/new-build-system/resource-shrinking)。看看是否是这种情况。
Harisewak

1
@Harisewak,如果我运行带有调试的任务仍然无法解决问题,那么我会收到此错误Uncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Sheraz Ahmad Khilji

我的项目有同样的问题。如果我使用com.android.tools.build:gradle:1.3.0,则可以编译。一旦使用2.0.0,它就会给我带来同样的问题
Santacrab

Answers:


185

我只修复了此代码。

local.properties

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

你应该在gradle上做这个改变

defaultConfig {
    applicationId "yourProjectPackage"
    minSdkVersion 15
    versionCode 1
    versionName "1.0"
    targetSdkVersion 23

    multiDexEnabled true //important
}

4
“ local.properties”是文件名还是配置值?它在项目中的何处(例如:在哪个文件夹中)?
尤利西斯·阿尔维斯

1
local.properties文件位于项目的根级别。如果您对multiDex有问题-> developer.android.com/studio/build/multidex.html
2016年

我刚刚在build.gradle中插入true的multiDexEnabled,魔术就完成了。谢谢。
Marcelo Gumiero

我不知道这一切意味着什么,但是对我有用!
DaveNOTDavid17年

在API <21上,multiDexEnabledApplication从扩展类MultiDexApplication将导致NoClassDefFoundErrors。
Miha_x64


45

对我来说,从项目中删除文件后问题就解决了jar。看来jar我项目中的文件之一正在使用旧版本的google play services


与jackrabbit-standalone-2.12.2.jar相同的问题。如果我将其添加到项目中,则会引发问题。
Alexeev Valeriy'8

1
@MikeOx我更新了一些Android工具,结果我得到了几个jar文件的两个版本,例如,mockable-android-24.jar和mockable-android-25.jar。删除较旧的版本会为我修复这些构建错误。
parvus

但是我没有使用任何jar文件,那么为什么我要面对这个问题
先生疯狂

15
能否请您提供此解决方案的详细信息的解释
伊万Milisavljevic

@IvanMilisavljevic您可以立即使用Gradle,而不是JAR文件。developers.google.com/android/guides/setup#split
OneCricketeer

39

我确实也收到了相同的错误:

错误:任务':app:transformClassesWithDexForDebug'的执行失败。com.android.build.api.transform.TransformException:java.lang.RuntimeException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:处理'命令'C:\ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe''完成,返回值非零

好吧,我通过以下步骤解决了这个问题:

  1. 打开应用程序的build.gradle(而不是项目根目录中的一个),然后添加:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. 再次尝试构建。

注意:4g是4 GB,这是dex操作的最大堆大小。


拯救了我的一天!干杯!
devhermluna

最好的...我已经漫游了几个小时..谢谢!
MbaiMburu

33

我重复说,不需要MULTIDEX,不需要MULTIDEX


让我详细说明一下:Multidex基本上是Android随附的工具,如果将其设置为true,则具有> 64,000种方法的应用程序可以使用稍有变化的构建过程进行编译。但是,仅当您的错误如下所示时,才需要使用multidex:

编写输出时遇到麻烦:字段引用过多:131000; 最大值为65536。您可以尝试使用--multi-dex选项。

或像这样

转换为Dalvik格式失败:无法执行dex:方法ID不在[0,0xffff]中:65536

但这不是事实!这里的问题(至少对我来说)是由您的build.gradle文件的依赖关系引起的。

解决方案: 利用特定的依赖关系-不仅仅是导入整个依赖项!

例如,如果您需要Play服务依赖项来定位,则仅将其导入即可

做:

compile 'com.google.android.gms:play-services-location:11.0.4'

别:

compile 'com.google.android.gms:play-services'

可能导致此问题的另一个问题可能是您使用的某种外部库,它引用了依赖项的先前版本。在这种情况下,请按照下列步骤操作:

  1. 转到SDK管理器,并安装对依赖项的所有更新
  2. 确保您的build.gradle文件显示最新版本。要获取最新版本,请使用以下链接:https : //developers.google.com/android/guides/setup
  3. 编辑您的库(或安装更新的版本,如果存在的话),以引用最新版本

我知道这个问题很旧,但是我需要得到这个答案,因为无缘无故使用multidex可能会导致您的应用程序出现ANR!仅在确定需要并知道它是什么的情况下,才使用multidex。

我本人花了数小时试图解决这个问题,而没有使用multidex,我只是想分享我的发现,希望这会有所帮助


辉煌!完美的作品!
stoefln

1
您如何知道哪个特定的依赖性导致了问题?com.facebook.android:audience-network-sdk:4.+从那时起,我已经添加了并且无法构建。
Ciberman '17

你救了我的一天!
罗文

1
这样愚蠢的答案。如果您有很多依赖关系,则无论如何都将需要多dex。只需添加kotlin库,几个google服务(com.google.android.gms:play-services-*:*),firebase服务,crashlytics,gson,androidx(支持库),cardview,recyclerview和android.material:material。没有MULTI DEX是不可能的(您喜欢capslock吗?我不喜欢,所以请下次不要在这里回答这样的问题...)
user155

这里有些机灵!确切地说,它不是multidex错误,multidex错误是不同的,并且可能来自某些依赖项。和@ user155,RUCHIR对您的依赖问题不承担任何责任!我喜欢capslocks :)
Hossein

24

我的应用程式中有类似的问题。这是我所做的。

1.将其添加到模块:app中的build.gradle

multiDexEnabled = true

因此,代码如下所示:

    android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example..."
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled = true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

这对我有用。希望这对您也有帮助:)

在同一项目中,我也使用了Firebase。因此,启用multiDexEnabled使Firebase中的Pre Lollipop设备出现另一个问题。未识别某些FireBase类。(无法获取提供者com.google.firebase.provider)。
解决方法在此说明


minifyEnable true给我例外-以下是我的问题,stackoverflow.com/ questions/51720018/… 请帮助我。
Naveen

24

在应用程序级别的defaultConfig中添加multiDexEnabled truegradle

defaultConfig {
    applicationId "your application id"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

21

将Google Play服务从7.5升级到9.0时出现此错误

出现以下错误:

compile 'com.google.android.gms:play-services:9.0.0'

当我改变为

compile 'com.google.android.gms:play-services:7.5.0'

没有错误。试试这个


1
谢谢,我已经更改了版本以编译'com.google.android.gms:play-services:8.4.0'我认为凌空使用了一些旧的Google Play服务,这些服务与Play-services不兼容:> 9.0
jai_b

3
这是我的解决方案。问题在于,多个第三方模块引用了具有不同版本的播放服务,因此,如何期望这些版本始终保持同步?非常奇怪的建筑细节。
Ryan H.

1
你不应该使用这个。请有选择地编译这些库。developers.google.com/android/guides/setup#split
OneCricketeer

13

更新到Android 3.4之后,我开始出现错误,尝试了上述所有解决方案。

问题的根本原因是,更新Android Studio 启用了Instant Run

因此,您可以尝试的解决方案之一是“禁用即时运行”,如果为您启用了该功能,则可以解决我的问题。


1
我遇到过同样的问题。禁用“即时运行”并再次启用它对我有用。
Fogh

1
也解决了我的问题。提醒您-Instant Run很有用,所以我希望尽快有更好的解决方案
-SimonH

1
Aaaaarg他们始终在更新上启用此功能,并且始终会导致很多问题。
奥利弗·迪克森

1
Jep,将Firebase放入项目后,这也是造成我问题的原因,最终禁用Instant Run使我可以构建它,谢谢!
达威

1
禁用即时运行对我来说解决了这个问题。再次没有收到错误。
韦斯利

11

好吧,我相信这个问题已经得到回答并被接受。但是我要写我所面对的问题以及如何解决它。

我确实也收到了相同的错误:

错误:任务':app:transformClassesWithDexForDebug'的执行失败。com.android.build.api.transform.TransformException:java.lang.RuntimeException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:处理'命令'C:\ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe''完成,返回值非零

我不是很幸运应用所有设置并获得成功。但是当我尝试再次调试项目时。这次我遇到了三个错误(包括上面的错误):

错误:Java HotSpot(TM)64位服务器VM警告:CodeCache已满。编译器已被禁用。

错误:Java HotSpot(TM)64位服务器VM警告:尝试使用-XX:ReservedCodeCacheSize =增加代码缓存的大小

那我做了什么?我只是去Android Studio:

文件>使高速缓存无效/重新启动。>>使无效并重新启动

快速解决!

特别提示:

我在Gradle控制台中发现了什么:

:app:incrementalDebugTasks:app:prePackageMarkerForDebug:app:fastDeployDebugExtractor:app:generateDebugInstantRunAppInfo:app:transformClassesWithDexForDebug要在进程中运行dex,Gradle守护程序需要更大的堆。 当前,它大约有910 MB。为了加快构建速度,请将Gradle守护程序的最大堆大小增加到2048 MB以上。 为此,请在项目gradle.properties中设置org.gradle.jvmargs = -Xmx2048M。有关更多信息,请参见https://docs.gradle.org/current/userguide/build_environment.html:app:transformClassesWithDexForDebug 失败

阅读更多关于它这里在Oracle博客



8
  1. 删除gradle中的jar文件
  2. 同步它
  3. 复制该jar并同步

这对我有用。


您能更具体地说明哪些jar文件吗?它是我们项目中的jar文件gradle/wrapper吗?
HendraWD

4
不知道人们提到“罐子”是什么意思。那什么也没解释。
追踪

7

它仅对特定服务有用。

例如代替使用:

compile 'com.google.android.gms:play-services:10.0.1'

我用了:

com.google.android.gms:play-services-places:10.0.1


1
同样在这里。与编译“10.2.0 com.google.android.gms:播放服务定位:”我通过更换编译“:播放服务10.2.0 com.google.android.gms”解决了这个问题
萨克伯

6

我知道这是一个老问题了,但仍然如此。每当我发生这种情况时,都是因为我包含了所有的播放服务库。只需在build.gradle(module)文件中将play-services:xxx更改为play-service-:xxx


6

Sol 1:build.gradle

defaultConfig {
    multiDexEnabled true
}

清理您的项目并重建。

溶胶2:local.properties添加,

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

溶胶3

compile 'com.android.support:multidex:1.0.1'

否则将所有3​​个添加到您的应用程序中。


5

只需将multiDexEnabled设置为true即可。

    defaultConfig 
    {
        multiDexEnabled true     
    }

3

我将jdk更新为1.8.0_74,将Android-studio更新为2.1预览版1,并将其添加到应用程序文件中

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

2

我有同样的问题。有一天,该程序运行良好,而随后的运行则不然。我检查了Github所做的更改。对我来说,问题出在依赖项的build.gradle(Module:app)上:

compile 'com.android.tools.build:gradle:2.1.2'

这条线是引起问题的那条。更改后,应用程序再次正常运行


1
没有其他机会>
阿贾伊·潘迪亚

1
更改为什么?
Ruchir Baronia'8

1
我删除了它(我现在正在检查它)并且它一直在工作
Sara Alberola

2

将此行添加到您的 build.gradle

 defaultConfig {
    ............
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    compileOptions.encoding = 'ISO-8859-1'
    multiDexEnabled true
}

4
您在此处添加了哪条“行”?
OneCricketeer

2

在DefaultConfig中添加multiDexEnabled = true

    defaultConfig {
    applicationId "com.test"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled = true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

2

因此,我没有通过添加multiDexEnabled标志来解决问题。在收到错误消息之前,它实际上在那里。

为我解决了该错误的原因是,确保我使用的是所有播放服务库的相同版本。在一个库中,我有11.8.0,但是在使用该库的应用程序中,我使用的是11.6.0,那是造成错误消息的原因。

因此,不要像以前的答案那样将库更改为特定版本,而是可能要检查所有版本是否在使用同一版本,因为Android Studio会通过警告明确禁止使用混合版本。


2

经过大量的努力,我只添加了以下凭据,我成功了

1)app->'proguard-rules.pro'文件

-ignorewarnings

-keep class * {
    public private *;
}

2)并还添加到应用程序-> build.gradle文件中

android {

        ...........................
    defaultConfig {
        ..................  

     multiDexEnabled true
    }


    buildTypes {
        debug {
            minifyEnabled true
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        innerTest {
            matchingFallbacks = ['debug', 'release']
        }

    }

...................................................
}

dependencies {
    ..................................
    implementation  'com.android.support:multidex:1.0.2'
}

2

默认情况下,Android Studio的最大堆大小为1280MB。如果您正在处理大型项目,或者系统具有大量RAM,则可以通过增加Android Studio进程(例如核心IDE,Gradle守护程序和Kotlin守护程序)的最大堆大小来提高性能。

如果使用具有至少5 GB RAM的64位系统,则还可以手动调整项目的堆大小。这样做,请按照下列步骤操作:

在菜单栏中单击文件>设置(或在macOS上单击Android Studio>首选项)。单击外观和行为>系统设置>内存设置。

有关更多信息,请单击

https://developer.android.com/studio/intro/studio-config

在此处输入图片说明


1

只需将gradle(模块应用)中的Google Play服务从9.xx更改为较低的版本8.4.0,对我来说就可以使用


这表明您使用的所有其他Google Play服务版本都不匹配。
OneCricketeer


1

如果您在更新Google Play服务9.8.0后遇到问题,请将其添加到您的依赖项中:

`dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.google.firebase:firebase-messaging:9.8.0'
compile 'com.google.android.gms:play-services-maps:9.8.0'
compile 'com.google.android.gms:play-services-location:9.8.0'
compile 'com.google.firebase:firebase-database:9.8.0'
compile 'com.google.firebase:firebase-auth:9.8.0'
compile 'com.google.firebase:firebase-crash:9.8.0'
compile 'com.google.maps.android:android-maps-utils:0.4.4'
compile 'com.google.android.gms:play-services-appindexing:9.8.0'

}


1

这些答案都不对我有用。我正在使用Android Studio 3.4.1。

我能够构建该项目,但是Android Studio在将其部署到移动设备时显示了此错误。事实证明这是“即时运行”故障。

遵循此答案:https : //stackoverflow.com/a/42695197/3197467


0

我真的不知道如何,但是在完成所有这些操作后,错误消失了:

1个

删除 implementation 'com.google.android.gms:play-services:12.0.1'

并添加

implementation 'com.google.android.gms:play-services-location:12.0.1'
implementation 'com.google.android.gms:play-services-maps:12.0.1'
implementation 'com.google.android.gms:play-services-places:12.0.1'

2

更新git,jdk,更改Project结构中的JDK位置

3

删除我的项目中的构建文件夹

4

清理并重建项目


0

对于那些仍然使用VS-TACO并遇到此问题的人。发生这种情况的原因是jar文件的版本不一致。

您仍然需要对build.gradle文件platforms\android夹中的文件添加更正:

 defaultConfig {
        multiDexEnabled true 
 }

 dependencies {
      compile 'com.android.support:multidex:1.0.3'
 }

build-extras.gradle如果有其他所有更改,最好在文件(该文件自动链接到build.gradle文件)中进行,然后删除platforms/android文件夹中的所有内容,但仅保留build-extras.gradle文件。然后编译。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.