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

나는 사용하고있다

  • 안드로이드 스튜디오 2.0 베타 6
  • Java 버전 : Java (TM) SE 런타임 환경 (빌드 1.8.0_73-b02)
  • Gradle 버전 : com.android.tools.build:gradle:2.0.0-beta6
  • 그리고 멀티 덱스를 활성화했습니다

내 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를 활성화하고 리소스 축소를 켜려면 축소 리소스를 사용해야합니다. minifyEnabled를 아직 사용하지 않은 경우 리플렉션 등을 사용하여 액세스하는 메소드가 해당 규칙을 유지하도록 proguard-rules.pro 파일을 편집해야 할 수도 있으므로 shrinkResources를 추가하기 전에 작업을 수행해야합니다. 파일 '( tools.android.com/tech-docs/new-build-system/resource-shrinking ). 이 경우에 참조하십시오.
Harisewak

1
그럼 내가이 오류 얻을 내가 디버그와 작업을 실행하면 여전히 나던 문제를 해결을 @HarisewakUncaught 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 아마드 Khilji에

내 프로젝트와 동일한 문제가 있습니다. com.android.tools.build:gradle:1.3.0을 사용하면 컴파일 할 수 있습니다. 2.0.0을 사용하자마자 같은 문제가 발생합니다
Santacrab

답변:


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"는 파일 이름 또는 구성 값입니까? 프로젝트 내부의 위치 (예 : 어느 폴더)입니까?
Ulysses Alves가

1
local.properties 파일은 프로젝트의 루트 레벨에 있습니다. multiDex에 대한 문제가있는 경우-> developer.android.com/studio/build/multidex.html
aemre

방금 build.gradle에 multiDexEnabled true를 삽입하고 마술을 마쳤습니다. 감사합니다.
Marcelo Gumiero

이 모든 것이 무엇을 의미하는지 모르겠지만 저에게 효과적이었습니다!
DaveNOTDavid

API <21 일 multiDexEnabled연장없이 Application클래스에서 MultiDexApplication이어질 것 NoClassDefFoundError들.
Miha_x64

82

당신이 만드는 경우 multiDexEnabled = true응용 프로그램의 defaultConfig, 당신은 원하는 결과를 얻을 것이다.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}

이것이 Multidex를 허용하는 유일한 단계는 아닙니다. 그리고 DexException어쨌든 을 볼 때만 필요 합니다. developer.android.com/studio/build/multidex.html
OneCricketeer

45

나를 위해 프로젝트에서 파일을 제거한 후 문제가 해결 되었습니다 jar. jar내 프로젝트 의 파일 중 하나가 이전 버전의을 사용하고있는 것 같습니다 google play services.


jackrabbit-standalone-2.12.2.jar와 동일한 문제입니다. 프로젝트에 추가하면 문제가 발생합니다.
Alexeev Valeriy

1
@MikeOx 일부 Android 도구를 업데이트 한 결과 mockable-android-24.jar 및 mockable-android-25.jar와 같은 두 가지 jar 파일 버전이 생겼습니다. 오래된 것들을 제거하면이 빌드 오류가 수정되었습니다.
parvus

그러나 나는 jar 파일을 사용하지 않고 있는데 왜 내가이 문제에 직면하고 있는지
Mr. Mad

15
이 솔루션에 대한 자세한 설명을 제공해 주시겠습니까?
Ivan Milisavljevic

@IvanMilisavljevic JAR 파일이 아닌 Gradle을 사용할 수 있습니다. 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 : 프로세스 'command'C : \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '가 0이 아닌 종료 값 1로 완료되었습니다.

잘 나는 다음 단계의 도움으로 이것을 고쳤다.

  1. 앱의 build.gradle (프로젝트 루트가 아닌)을 열고 다음을 추가하십시오.

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. 빌드를 다시 시도하십시오.

참고 : 4g는 4 기가 바이트이며 이는 dex 작업의 최대 힙 크기입니다.


내 하루를 구했다! 건배!
devhermluna

최고 ... 나는 몇 시간 동안 로밍했습니다. 감사합니다!
MbaiMburu

33

MULTIDEX 불필요, 반복, MULTIDEX 불필요


자세히 설명하자면 : Multidex는 기본적으로 Android와 함께 제공되는 도구이며이를 true로 설정하면 64,000 개가 넘는 메서드가있는 앱은 약간 변경된 빌드 프로세스를 사용하여 컴파일 할 수 있습니다. 그러나 오류가 다음과 같은 경우에만 멀티 덱스를 사용해야합니다.

출력 쓰기 문제 : 너무 많은 필드 참조 : 131000; max는 65536입니다. --multi-dex 옵션을 사용해보십시오.

또는 이런

Dalvik 형식으로 변환하지 못했습니다 : dex를 실행할 수 없습니다 : [0, 0xffff]에없는 메소드 ID : 65536

그러나 그것은 아니다 여기서는 ! here (나를 위해) 문제는 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. 최신 버전을 참조하도록 라이브러리를 편집하거나 업데이트 된 버전이있는 경우 설치하십시오.

이 질문이 오래되었다는 것을 알고 있습니다. 앱의 수 잠재적으로 ANR의 원인이 아무 이유없이 multidex를 사용하기 때문에, 거기이 답변을 받으실 수 있습니다! 멀티 덱스가 필요한 경우에만 사용하고 그것이 무엇인지 이해 한 경우에만 사용하십시오.

나 자신도 멀티 덱스없이이 문제를 해결하기 위해 몇 시간을 보냈으며, 발견 한 내용을 공유하고 싶었습니다.


훌륭한! 완벽하게 작동합니다!
stoefln

1
어떤 특정 종속성이 문제를 일으키는 지 어떻게 알 수 있습니까? 나는 추가 com.facebook.android:audience-network-sdk:4.+했고 그 이후로 빌드 할 수 없습니다.
Ciberman

당신은 내 하루를 구했다!
Rowan

1
그런 바보 같은 대답. 의존성이 많으면 어쨌든 멀티 덱스가 필요합니다. kotlin 라이브러리, 몇 가지 Google 서비스 ( com.google.android.gms:play-services-*:*), firebase 서비스, crashlytics, gson, androidx (지원 라이브러리), cardview, recyclerview, android.material : material을 추가하십시오. MULTI DEX
없이는

어떤 몸은 여기 영리합니다! 정확하게!, 멀티 덱스 오류가 아니며 멀티 덱스 오류가 다르며 일부 종속성에서 발생할 수 있습니다. 그리고 @ user155, RUCHIR은 귀하의 문제에 대해 책임을지지 않습니다! 나는 capslocks를 좋아합니다 :)
Hossein

25

앱 수준의 defaultConfig에 multiDexEnabled true 를 추가하십시오 gradle.

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

24

내 앱에서 비슷한 문제가 발생했습니다. 여기 내가 한 일이 있습니다.

1. 모듈의 build.gradle에 이것을 추가하십시오 : app

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 for Lollipop 기기의 다른 문제가 발생할 수 있습니다 . 일부 FireBase 클래스가 식별되지 않았습니다. ( com.google.firebase.provider 공급자를 얻을 수 없음 ).
이를 해결하는 방법이 여기 에 설명되어 있습니다.


minifyEnable true 나에게 예외를 제공합니다-아래는 내 질문 stackoverflow.com/questions/51720018/… 입니다. 도와주세요.
Naveen

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'을 컴파일하도록 버전을 변경했습니다. 발리는 play-services와 호환되지 않는 오래된 Google Play 서비스를 사용한다고 생각합니다.> 9.0
jai_b

3
이것이 나를위한 해결책이었습니다. 문제는 여러 타사 모듈이 서로 다른 버전의 플레이 서비스를 참조하므로 이러한 버전이 항상 동기화 될 것으로 예상 되는가? 매우 이상한 건축 세부 사항.
Ryan H.

1
이것을 사용해서는 안됩니다. 해당 라이브러리를 선택적으로 컴파일하십시오. developers.google.com/android/guides/setup#split
OneCricketeer

14

Android 3.4로 업데이트 한 후 오류가 발생하기 시작했으며 위의 모든 솔루션을 시도했습니다.

문제의 근본 원인은 Android Studio를 업데이트 하면 즉시 실행이 활성화되었습니다 .

따라서 시도 할 수있는 솔루션 중 하나는 Instant Run 비활성화입니다. 활성화 된 경우 내 문제가 해결되었습니다.


1
나는 같은 문제가 있었다. Instant Run을 비활성화하고 다시 활성화하면 나에게 도움이되었습니다.
Fogh

1
내 문제도 해결되었습니다. 당신은주의한다 - 내가 더 나은 수정이 곧이 희망 있도록 즉시 실행에 유용합니다
SimonH

1
Aaaaarg는 항상 업데이트 에서이 기능을 사용하도록 설정하며 항상 많은 문제를 일으 킵니다.
Oliver Dixon

1
프로젝트에 Firebase를 넣은 후에도 이것이 문제의 원인이었습니다 .Instant Run을 비활성화하면 마침내 빌드 할 수 있습니다. 감사합니다!
Starwave

1
이 문제로 인스턴트 실행을 비활성화했습니다. 오류가 다시 발생하지 않았습니다.
wesley franks

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 : 프로세스 'command'C : \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '가 0이 아닌 종료 값 1로 완료되었습니다.

다행스럽게도 모든 설정을 적용하고 성공했습니다. 그러나 프로젝트를 다시 디버깅하려고 할 때. 이번에는 세 가지 오류가 발생했습니다 (위 포함).

오류 : Java HotSpot (TM) 64 비트 서버 VM 경고 : CodeCache가 가득 찼습니다. 컴파일러가 비활성화되었습니다.

오류 : Java HotSpot (TM) 64 비트 서버 VM 경고 : -XX : ReservedCodeCacheSize =를 사용하여 코드 캐시 크기를 늘리십시오.

내가 무엇을 했습니까? 방금 Android Studio로 이동합니다.

파일> 캐시 무효화 / 재시작 ..> 무효화 및 재시작

빠른 수정!

추가 참고 사항 :

Gradle Console에서 찾은 것 :

: app : incrementalDebugTasks : app : prePackageMarkerForDebug : app : fastDeployDebugExtractor : app : generateDebugInstantRunAppInfo : app : transformClassesWithDexForDebug 프로세스에서 dex를 실행하려면 Gradle 데몬에 더 큰 힙이 필요합니다. 현재 약 910MB입니다. 더 빠른 빌드를 위해서는 Gradle 데몬의 최대 힙 크기를 2048MB 이상으로 늘리십시오. 이를 수행하려면 gradle.properties 프로젝트에서 org.gradle.jvmargs = -Xmx2048M을 설정하십시오. 자세한 내용은 https://docs.gradle.org/current/userguide/build_environment.html : app : transformClassesWithDexForDebug FAILED를 참조 하십시오 .

Oracle 블로그에서 여기 에 대해 자세히 알아보십시오


9

방금이 코드를 gradle.properties에 작성했으며 이제 괜찮습니다.

org.gradle.jvmargs=-XX:MaxHeapSize\=2048m -Xmx2048m

8
  1. gradle에서 jar 파일을 제거하십시오.
  2. 동기화
  3. 그 항아리를 복사하고 동기화하십시오.

이것은 나를 위해 일했습니다.


어떤 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
여기도 마찬가지입니다. 컴파일 'com.google.android.gms : play-services : 10.2.0'을 컴파일 'com.google.android.gms : play-services-location : 10.2.0'으로 교체하여 문제를 해결했습니다.
Sukhbir

6

나는 그것이 오래된 질문이지만 여전히 여전히 알고 있습니다. 이런 일이 생길 때마다 모든 플레이 서비스 라이브러리가 포함되어 있기 때문입니다. build.gradle (module) 파일에서 play-services : xxx를 play-service- : xxx로 변경하십시오.


6

솔 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

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 플래그를 추가하여 광산을 해결하지 못했습니다. 실제로 오류 메시지가 표시되기 전에있었습니다.

나를 위해 오류를 해결 한 것은 모든 버전의 모든 Play 서비스 라이브러리를 사용하고 있는지 확인하는 것이 었습니다. 한 라이브러리에는 11.8.0이 있었지만 라이브러리를 소비하는 앱에서는 11.6.0을 사용하고 있었고 그 차이로 인해 오류 메시지가 발생했습니다.

따라서 이전 답변과 같은 특정 버전으로 라이브러리를 변경하는 대신 혼합 버전이 경고로 Android Studio에서 명시 적으로 권장되지 않기 때문에 동일한 버전을 사용하고 있는지 확인하고 싶을 수도 있습니다.


2

많은 노력 끝에 방금 자격 증명 아래에 추가했으며 성공했습니다.

1) app-> 'proguard-rules.pro'파일

-ignorewarnings

-keep class * {
    public private *;
}

2) 또한 app-> 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이 많은 경우 코어 IDE, Gradle 데몬 및 Kotlin 데몬과 같은 Android Studio 프로세스의 최대 힙 크기를 늘려 성능을 향상시킬 수 있습니다.

RAM이 5GB 이상인 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

이것은 디버그 빌드에서도 발생했으며 모든 모듈 수준 및 프로젝트 수준 빌드 폴더를 지우고 작동했습니다.


지금 나를 위해 일했습니다.
WillC

1

여전히 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파일을. 그런 다음 컴파일하십시오.


1

이 답변들 중 어느 것도 나를 위해 일하지 않았습니다. Android Studio 3.4.1을 사용하고 있습니다.

프로젝트를 빌드 할 수 있었지만 Android 스튜디오에서 모바일 장치에 배포하려고 할 때이 오류가 표시되었습니다. "즉시 실행"오류 인 것으로 나타났습니다.

이 답변을 따르십시오 : 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 업데이트, JDK 위치 변경

내 프로젝트에서 빌드 폴더를 삭제하십시오.

4

프로젝트 정리 및 재 구축

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.