Android - błąd: wykonanie nie powiodło się dla zadania „: app: transformClassesWithDexForRelease”


191

Problem polega na tym, że jestem w stanie uruchomić moją aplikację, gdy zmieniam debugtryb, ale nie działa, gdy przełączam się w releasetryb.

Wyjątek:

**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

Kiedy uruchomiłem komendę gradle build z stacktrace, właśnie to otrzymałem

./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

ja używam

  • Android Studio 2.0 Beta 6
  • Wersja Java: Java Runtime Environment Java (TM) SE (kompilacja 1.8.0_73-b02)
  • Wersja stopniowa: com.android.tools.build:gradle:2.0.0-beta6
  • I mam włączony Multidex

Mój plik 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'

}

Wygląda na to, że mogę uruchomić kompilację wersji, jeśli ją usunę minifyEnabled true. Dlaczego tak jest, czy istnieje inny sposób na rozwiązanie tego problemu?


czy możesz opublikować plik build.gradle aplikacji?
Harisewak,

@Harisewak zaktualizowałem pytanie, proszę spojrzeć na to teraz
Sheraz Ahmad Khilji

Tak @Sheraz masz rację, że przełączenie minifyEnabled na false rozwiązuje problem. Przeczytałem to w dokumencie: „musisz włączyć minifyEnabled, aby włączyć zmniejszanie kodu, a następnie shrinkResources, aby włączyć zmniejszanie zasobów. Jeśli jeszcze nie korzystałeś z minifyEnabled, upewnij się, że działasz, zanim dodasz także shrinkResources, ponieważ być może będziesz musiał edytować plik proguard-rules.pro, aby upewnić się, że wszystkie metody, do których masz dostęp za pomocą refleksji itp., Są wymienione jako reguły zachowania w tym plik ”( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Sprawdź, czy tak jest.
Harisewak,

1
@Harisewak nadal nie rozwiązuje problemu, jeśli uruchomię zadanie z debugowaniem, a następnie otrzymam ten błądUncaught 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

Mam ten sam problem z moim projektem. Jeśli użyję com.android.tools.build:gradle:1.3.0, jestem w stanie skompilować. Gdy tylko
użyję

Odpowiedzi:


185

naprawiłem tylko ten kod.

local.properties

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

i powinieneś to zmieniać w gradiencie

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

    multiDexEnabled true //important
}

4
„local.properties” to nazwa pliku lub wartość konfiguracji? Gdzie (np .: w którym folderze) znajduje się w projekcie?
Ulysses Alves

1
Plik local.properties przechodzi na poziom główny projektu. jeśli masz problem z multiDex -> developer.android.com/studio/build/multidex.html
anem

Właśnie włożyłem multiDexEnabled true do mojego build.gradle i magia się skończyła. Dziękuję Ci.
Marcelo Gumiero

Nie wiem, co to wszystko znaczy, ale zadziałało dla mnie!
DaveNOTDavid

Na API <21, multiDexEnabledbez rozszerzania Applicationklasy z MultiDexApplicationprowadzi do NoClassDefFoundErrors.
Miha_x64,


45

Dla mnie problem został rozwiązany po usunięciu jarpliku z mojego projektu. wygląda na to, że jeden z jarplików w moim projekcie używał starszej wersji google play services.


ten sam problem z jackrabbit-standalone-2.12.2.jar. Jeśli dodam go do projektu, problem się pojawi.
Alexeev Valeriy

1
@MikeOx Zaktualizowałem niektóre narzędzia dla Androida, w wyniku czego otrzymałem dwie wersje kilku plików jar, np. Mockable-android-24.jar i mockable-android-25.jar. Usunięcie starszych naprawiło te błędy kompilacji.
parvus

ale nie używam żadnych plików jar, więc dlaczego mam do czynienia z tym problemem
Mr. Mad

15
Czy możesz podać więcej szczegółowych wyjaśnień dla tego rozwiązania
Ivan Milisavljevic

@IvanMilisavljevic Możesz teraz używać Gradle, a nie plików JAR. developers.google.com/android/guides/setup#split
OneCricketeer

39

Otrzymałem również ten sam błąd:

Błąd: wykonanie nie powiodło się dla zadania „: 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: Przetwarzanie polecenia „C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe” zakończone niezerową wartością wyjścia 1

cóż, naprawiłem to za pomocą następujących kroków:

  1. Otwórz build.gradle aplikacji (nie ten w katalogu głównym projektu) i dodaj:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Spróbuj ponownie zbudować.

Uwaga: 4 g to 4 gigabajty i jest to maksymalny rozmiar stosu dla operacji dex.


Uratowałem mój dzień! Twoje zdrowie!
devhermluna

Najlepsze ... włóczę się od wielu godzin .. dzięki!
MbaiMburu

33

NIE MA POTRZEBY DLA MULTIDEXU, POWTARZAJĘ, NIE MA POTRZEBY DLA MULTIDEXU


Pozwól mi rozwinąć: Multidex jest w zasadzie narzędziem, które jest dostarczane z Androidem, a jeśli ustawisz to na prawdę, aplikacje z> 64 000 metod są w stanie skompilować przy użyciu nieco zmienionego procesu kompilacji. Jednak musisz użyć multidex tylko wtedy, gdy błąd wygląda następująco:

problem z zapisaniem danych wyjściowych: zbyt wiele odniesień do pola: 131000; max to 65536. Możesz spróbować użyć opcji --multi-dex.

lub tak

Konwersja do formatu Dalvik nie powiodła się: Nie można wykonać dex: identyfikator metody nie w [0, 0xffff]: 65536

Ale tak nie jest tutaj! Problem tutaj (przynajmniej dla mnie) wynika z zależności pliku build.gradle.

ROZWIĄZANIE: Wykorzystaj określone zależności - nie importuj całej sekcji zależności!

Na przykład, jeśli potrzebujesz zależności usług Play dla lokalizacji, zaimportuj ją tylko dla lokalizacji.

ROBIĆ:

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

NIE:

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

Innym problemem, który może być tego przyczyną, może być używana biblioteka zewnętrzna, która odwołuje się do poprzedniej wersji zależności. W takim przypadku wykonaj następujące kroki:

  1. Przejdź do menedżera SDK i zainstaluj wszelkie aktualizacje swoich zależności
  2. Upewnij się, że plik build.gradle pokazuje najnowszą wersję. Aby uzyskać najnowszą wersję, skorzystaj z tego łącza: https://developers.google.com/android/guides/setup
  3. Edytuj bibliotekę (lub zainstaluj zaktualizowaną wersję, jeśli istnieje), aby odwoływała się do najnowszej wersji

Wiem, że to pytanie jest stary, ale ja potrzebuję dostać tę odpowiedź tam, ponieważ używając multidex bez powodu potencjalnie może powodować ANR dla swojej aplikacji! Używaj multidex TYLKO, jeśli jesteś pewien, że go potrzebujesz i rozumiesz, co to jest.

Sam spędziłem godziny, próbując rozwiązać ten problem bez multideksów, i chciałem tylko podzielić się swoimi odkryciami - mam nadzieję, że to pomoże


Znakomity! Działa świetnie!
stoefln

1
Skąd wiesz, która konkretna zależność powoduje problem? Dodałem com.facebook.android:audience-network-sdk:4.+i od tego czasu nie mogę budować.
Ciberman

Uratowałeś mi dzień!
Rowan

1
taka głupia odpowiedź. jeśli masz wiele zależności, i tak potrzebujesz multi dex. wystarczy dodać biblioteki kotlin, kilka usług Google ( com.google.android.gms:play-services-*:*), usługi firebase, crashlytics, gson, androidx (biblioteki wsparcia), cardview, recyclinglerview, android.material: materiał. NIE JEST MOŻLIWE BEZ WIELU ZRÓB (lubisz capslock? Nie, więc proszę, nie odpowiadaj tutaj na takie pytania następnym razem ...)
użytkownik155

Ciało jest tutaj sprytne! Dokładnie!, Nie jest to błąd multideksów, błąd multideksów jest inny i może wynikać z niektórych zależności. i @ user155, RUCHIR NIE PONOSI ODPOWIEDZIALNOŚCI ZA TWOJE ZALEŻNOŚCI PROBLEM! i lubię kapsle :)
Hossein

25

Dodaj multiDexEnabled true w defaultConfig na poziomie aplikacji gradle.

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

24

Miałem podobny problem w mojej aplikacji. Oto co zrobiłem.

1. dodaj to dla build.gradle w module: app

multiDexEnabled = true

Więc kod wyglądałby tak:

    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'
        }
    }
}

To zadziałało dla mnie. Mam nadzieję, że to ci też pomoże :)

W tym samym projekcie użyłem również Firebase . Tak więc włączenie multiDexEnabled pozwala na inny problem w Firebase dla urządzeń Pre Lollipop . Niektóre klasy FireBase nie zostały zidentyfikowane. ( Nie można uzyskać dostawcy com.google.firebase.provider ).
Metoda rozwiązania wyjaśniona tutaj.


minifyEnable true daje mi wyjątek - poniżej znajduje się moje pytanie, stackoverflow.com/questions/51720018/... Proszę o pomoc.
Naveen,

21

Wystąpił ten błąd podczas aktualizacji usług Google Play do wersji 9.0 z 7.5

Wystąpił błąd poniżej jednego:

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

Kiedy zmieniłem się na

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

Nie ma błędu. Spróbuj tego


1
dzięki, zmieniłem wersję na kompilację „com.google.android.gms: play-services: 8.4.0”. Myślę, że volley korzysta ze starych usług Google Play, które nie są kompatybilne z play-services:> 9.0
jai_b

3
To było dla mnie rozwiązanie. Problem polega na tym, że kilka zewnętrznych modułów odwołuje się do usług odtwarzania w różnych wersjach, więc jak można oczekiwać, że te wersje będą cały czas synchronizowane? Bardzo dziwny detal architektoniczny.
Ryan H.,

1
Nie powinieneś tego używać. Proszę selektywnie skompilować te biblioteki. developers.google.com/android/guides/setup#split
OneCricketeer

14

Po aktualizacji do Androida 3.4 zacząłem otrzymywać błąd, wypróbowałem wszystkie powyższe rozwiązania.

Główną przyczyną problemu było zaktualizowanie Android Studio w trybie Instant Run .

Dlatego jednym z rozwiązań, które możesz wypróbować, jest wyłączenie Natychmiastowego uruchamiania, jeśli jest włączone dla Ciebie, naprawiło mój problem.


1
Miałem ten sam problem. Wyłączenie Instant Run i włączenie go ponownie działało dla mnie.
Fogh

1
Naprawiono też mój problem. Pamiętaj - Instant Run jest przydatny, więc mam nadzieję, że wkrótce będzie lepszy sposób
SimonH

1
Aaaaarg zawsze włączają to w aktualizacji i zawsze powoduje tak wiele problemów.
Oliver Dixon

1
Jep, to też było przyczyną problemu dla mnie po włączeniu Firebase do projektu, wyłączenie Instant Run w końcu pozwala mi go zbudować, dzięki!
Starwave

1
Wyłączenie Natychmiastowego uruchamiania działało dla mnie z tym problemem. Błąd nie pojawił się ponownie.
wesley franks

11

Uważam, że odpowiedź na to pytanie jest akceptowana. Ale zamierzam napisać, z czym mam do czynienia i jak to rozwiązałem.

Otrzymałem również ten sam błąd:

Błąd: wykonanie nie powiodło się dla zadania „: 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: Przetwarzanie polecenia „C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe” zakończone niezerową wartością wyjścia 1

Nie miałem szczęścia zastosować wszystkich ustawień i odniosłem sukces. Ale kiedy próbowałem ponownie debugować projekt. Tym razem dostałem Three Error (w tym powyżej):

Błąd: 64-bitowe ostrzeżenie maszyny wirtualnej serwera Java HotSpot ™: CodeCache jest pełny. Kompilator został wyłączony.

i

Błąd: Ostrzeżenie 64-bitowej maszyny wirtualnej serwera Java HotSpot (TM): Spróbuj zwiększyć rozmiar pamięci podręcznej kodu, używając opcji -XX: ReservedCodeCacheSize =

Więc co zrobiłem? Po prostu idę do Android Studio:

Plik> Unieważnij pamięć podręczną / Uruchom ponownie ..> Unieważnij i uruchom ponownie

Szybka naprawa!

Dodatkowa uwaga:

Co znalazłem w Konsoli Gradle:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generateDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Aby uruchomić dex w procesie, demon Gradle potrzebuje większej sterty. Obecnie ma około 910 MB. Aby przyspieszyć kompilację, zwiększ maksymalny rozmiar sterty demona Gradle do ponad 2048 MB. Aby to zrobić, ustaw org.gradle.jvmargs = -Xmx2048M w projekcie gradle.properties. Aby uzyskać więcej informacji, zobacz https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug FAILED

Przeczytaj więcej o tym tutaj na Oracle Blog


9

Właśnie napisałem ten kod w gradle.properties i jest teraz w porządku

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

8
  1. Usuń pliki jar w swojej klasie
  2. Zsynchronizuj to
  3. Skopiuj ten słoik i zsynchronizuj go

To zadziałało dla mnie.


Czy możesz sprecyzować, które pliki jar? Czy to pliki jar w naszym projekcie gradle/wrapper?
HendraWD,

4
Nie wiem, co to jest z ludźmi wspominającymi o „słoikach”. To nic nie wyjaśnia.
Śledzenie

7

Działało mi to tylko przy użyciu określonej usługi.

Na przykład zamiast używać:

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

Użyłem:

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


1
To samo tutaj. Rozwiązałem problem, zastępując kompilację „com.google.android.gms: play-services: 10.2.0” kompilacją „com.google.android.gms: play-services-location: 10.2.0”
Sukhbir

6

Wiem, że to trochę stare pytanie, ale nadal. Za każdym razem, gdy mi się to przytrafia, dzieje się tak dlatego, że dołączam wszystkie biblioteki usług Play. Wystarczy zmienić play-services: xxx na play-service-: xxx w pliku build.gradle (module)


6

Sol 1: W build.gradle:

defaultConfig {
    multiDexEnabled true
}

Oczyść swój projekt i przebuduj.

Sol 2: w local.propertiesdodatku,

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

Sol 3

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

W przeciwnym razie dodaj wszystkie 3 do swojej aplikacji.


5

po prostu ustawienie multiDexEnabled na true działało dobrze.

    defaultConfig 
    {
        multiDexEnabled true     
    }

3

Zaktualizowałem jdk do wersji 1.8.0_74, Android-studio do wersji 2.1 podglądu 1 i dodałem do pliku aplikacji

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

2

Miałem ten sam problem. Pewnego dnia program działał idealnie, a kolejne nie. Sprawdziłem na Github zmiany, które wprowadziłem. Dla mnie problem polegał na build.gradle (Module: app) w zależnościach:

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

Ta linia była przyczyną problemu. Po zmianie aplikacja znów działała poprawnie


1
Nic nie działa>
Ajay Pandya

1
Zmieniasz to na co?
Ruchir Baronia,

1
Usunąłem go (sprawdzałem teraz) i dalej działało
Sara Alberola,

2

dodaj tę linię do swojego build.gradle

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

4
Którą „linię” tu dodałeś?
OneCricketeer

2

W DefaultConfig Dodaj multiDexEnabled = true

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

2

Więc moje nie zostało rozwiązane przez dodanie flagi multiDexEnabled. To było tam przed otrzymaniem komunikatu o błędzie.

Tym, co rozwiązało błąd, było upewnienie się, że korzystam z tej samej wersji wszystkich bibliotek usług Play. W jednej bibliotece miałem 11.8.0, ale w aplikacji wykorzystującej bibliotekę korzystałem z 11.6.0 i ta różnica spowodowała komunikat o błędzie.

Zamiast więc zmieniać biblioteki na określone wersje, takie jak poprzednie odpowiedzi, być może chcesz sprawdzić, czy używasz tej samej wersji, ponieważ ostrzeżenia odradzają miksowanie wersji w Android Studio.


2

Po wielu wysiłkach właśnie dodałem poniżej referencje i udało mi się

1) plik app-> „proguard-rules.pro”

-ignorewarnings

-keep class * {
    public private *;
}

2) A także dodane w aplikacji -> plik 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

Domyślnie Android Studio ma maksymalny rozmiar sterty 1280 MB. Jeśli pracujesz nad dużym projektem lub twój system ma dużo pamięci RAM, możesz poprawić wydajność, zwiększając maksymalny rozmiar sterty dla procesów Android Studio, takich jak podstawowe IDE, demon Gradle i demon Kotlin.

Jeśli używasz 64-bitowego systemu, który ma co najmniej 5 GB pamięci RAM, możesz również ręcznie dostosować rozmiary sterty dla swojego projektu. Aby to zrobić, wykonaj następujące kroki:

Kliknij opcję Plik> Ustawienia na pasku menu (lub Android Studio> Preferencje w systemie macOS). Kliknij Wygląd i zachowanie> Ustawienia systemu> Ustawienia pamięci.

Aby uzyskać więcej informacji, kliknij

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

wprowadź opis zdjęcia tutaj


1

Wystarczy zmienić usługi Google Play w gradle (aplikacja modułu) z 9.xx na niższą wersję 8.4.0 jest dla mnie pracy


Jest to znak, że wszystkie inne używane przez Ciebie wersje usług Google Play nie są zgodne.
OneCricketeer


1

Jeśli napotykasz problem po aktualizacji usług Google Play 9.8.0, dodaj to do swoich zależności:

`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

Zdarzyło mi się to nawet w przypadku kompilacji debugowania i po prostu wyczyściłem wszystkie foldery kompilacji na poziomie modułu i na poziomie projektu i zadziałało, tak po prostu.


Pracował dla mnie właśnie teraz.
WillC

1

Dla tych, którzy nadal używają VS-TACO i mają ten problem. Dzieje się tak z powodu niespójności wersji plików jar.

Nadal musisz dodać poprawki do build.gradlepliku w platforms\androidfolderze:

 defaultConfig {
        multiDexEnabled true 
 }

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

Lepiej zrobić to w build-extras.gradlepliku (który automatycznie łączy się z plikiem build.gradle) ze wszystkimi innymi zmianami, jeśli są, i usunąć wszystko w platforms/androidfolderze, ale zostaw tam tylko build-extras.gradleplik. Następnie po prostu skompiluj.


1

Żadna z tych odpowiedzi nie działała dla mnie. Używam Androida Studio 3.4.1.

Byłem w stanie zbudować projekt, ale studio Android pokazuje ten błąd, gdy zamierzałem wdrożyć go na urządzeniu mobilnym. Okazuje się, że jest to wina „natychmiastowych uruchomień”.

Postępuj zgodnie z tą odpowiedzią: https://stackoverflow.com/a/42695197/3197467


0

Naprawdę nie wiem jak, ale błąd zniknął po tym wszystkim:

1

usunąć implementation 'com.google.android.gms:play-services:12.0.1'

I dodaj

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)

Zaktualizuj git, jdk, zmień lokalizację JDK w strukturze projektu

3)

Usuń folder kompilacji z mojego projektu

4

Oczyść i odbuduj projekt

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.