Errore Android: esecuzione non riuscita per l'attività ": app: transformClassesWithDexForRelease"


191

Il problema è che sono in grado di eseguire la mia app quando passo alla debugmodalità ma fallisce quando passo alla releasemodalità.

Eccezione:

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

Quando ho eseguito il comando gradle build con stacktrace, questo è quello che ottengo

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

sto usando

  • Android Studio 2.0 Beta 6
  • Versione Java: Java (TM) SE Runtime Environment (build 1.8.0_73-b02)
  • Versione Gradle: com.android.tools.build:gradle:2.0.0-beta6
  • E ho Multidex abilitato

Il mio file 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'

}

Sembra che riesco a far funzionare la mia versione di rilascio se rimuovo minifyEnabled trueda esso. Perché è quello, c'è un altro modo per risolverlo


potresti pubblicare il file build.gradle della tua app?
Harisewak,

@Harisewak ho aggiornato la domanda, per favore dai un'occhiata ora
Sheraz Ahmad Khilji

Sì, @Sheraz, hai ragione, il passaggio da minifyEnabled a false risolve il problema. Ho letto questo nel documento: 'devi abilitare minifyEnabled per attivare la riduzione del codice, e quindi ridurre le risorse per attivare la riduzione delle risorse. Se non hai già utilizzato minifyEnabled, assicurati di farlo funzionare prima di aggiungere anche shrinkResources, dal momento che potresti dover modificare il tuo file proguard-rules.pro per assicurarti che tutti i metodi a cui accedi con la riflessione ecc. Siano elencati come mantenere regole in quel file "( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Vedi se questo è il caso.
Harisewak,

1
@Harisewak non risolve ancora il problema se eseguo il task con il debug quindi ottengo questo erroreUncaught 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

Ho lo stesso problema con il mio progetto. Se uso com.android.tools.build:gradle:1.3.0, sono in grado di compilare. Non appena uso 2.0.0 mi dà lo stesso problema
Santacrab

Risposte:


186

ho risolto proprio questo codice.

local.properties

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

e dovresti farlo cambiando a livello

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

    multiDexEnabled true //important
}

4
"local.properties" è un nome file o un valore di configurazione? Dove (es: in quale cartella) si trova all'interno del progetto?
Ulisse Alves,

1
Il file local.properties va nel livello principale del progetto. se hai problemi con multiDex -> developer.android.com/studio/build/multidex.html
aemre

Ho appena inserito multiDexEnabled true nel mio build.gradle e la magia è stata fatta. Grazie.
Marcelo Gumiero,

Non so cosa significhi tutto ciò, ma ha funzionato per me!
DaveNOTDavid

Su API <21, multiDexEnabledsenza estendere la Applicationclasse da si MultiDexApplicationotterrà a NoClassDefFoundErrors.
Miha_x64,


45

Per me, il problema è stato risolto dopo aver rimosso il jarfile dal mio progetto. sembra che uno dei jarfile all'interno del mio progetto stesse usando una versione precedente di google play services.


stesso problema con jackrabbit-standalone-2.12.2.jar. Se lo aggiungo al progetto, il problema si pone.
Alexeev Valeriy,

1
@MikeOx Ho aggiornato alcuni strumenti Android e, di conseguenza, ho finito con due versioni di alcuni file jar, ad esempio mockable-android-24.jar e mockable-android-25.jar. La rimozione di quelli più vecchi ha risolto questi errori di compilazione per me.
parvus

ma non sto usando alcun file jar quindi perché sto affrontando questo problema
Mr. Mad

15
Potete per favore fornire maggiori spiegazioni dettagliate per questa soluzione
Ivan Milisavljevic,

@IvanMilisavljevic Ora puoi usare Gradle, non i file JAR. developers.google.com/android/guides/setup#split
OneCricketeer

39

Ho ricevuto anche lo stesso errore:

Errore: Esecuzione non riuscita per l'attività ': 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: processo 'comando' C: \ Programmi \ Java \ jdk1.8.0_60 \ bin \ java.exe '' terminato con valore di uscita diverso da zero 1

bene ho risolto questo con l'aiuto dei seguenti passaggi:

  1. Apri build.gradle della tua app (non quello nella radice del progetto) e aggiungi:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Prova di nuovo la tua build.

Nota: 4g è 4 Gigabyte e questa è una dimensione heap massima per l'operazione dex.


Mi hai salvato la giornata! Saluti!
devhermluna,

Il migliore ... Sono in giro da ore ... grazie!
MbaiMburu,

33

NESSUN BISOGNO DI MULTIDEX, RIPETO, NESSUN BISOGNO DI MULTIDEX


Consentitemi di elaborare: Multidex è fondamentalmente uno strumento fornito con Android e, se lo impostate su true, le app con> 64.000 metodi sono in grado di compilare utilizzando un processo di generazione leggermente modificato. Tuttavia, devi utilizzare multidex solo se il tuo errore è simile al seguente:

difficoltà nella scrittura dell'output: troppi riferimenti di campo: 131000; max è 65536. Puoi provare a usare l'opzione --multi-dex.

o così

Conversione nel formato Dalvik non riuscita: impossibile eseguire dex: ID metodo non in [0, 0xffff]: 65536

Ma questo non è il caso qui! Il problema qui (per me almeno) è causato dalle dipendenze del tuo file build.gradle.

LA SOLUZIONE: utilizzare dipendenze specifiche, non importare solo un'intera sezione di dipendenze!

Ad esempio, se hai bisogno della dipendenza Play Services per la posizione, importala solo per la posizione.

FARE:

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

NON FARE:

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

Un altro problema che potrebbe causare questo potrebbe essere una sorta di libreria esterna che si sta utilizzando, ovvero fare riferimento a una versione precedente della propria dipendenza. Seguire questi passaggi in tal caso:

  1. Vai al gestore SDK e installa eventuali aggiornamenti alle tue dipendenze
  2. Assicurati che il tuo file build.gradle mostri l'ultima versione. Per ottenere la versione più recente, utilizzare questo collegamento: https://developers.google.com/android/guides/setup
  3. Modifica la tua libreria (o installa una versione aggiornata se esiste), per fare riferimento alla versione più recente

So che questa domanda è vecchia, ma ho bisogno di ottenere questa risposta, perché l'uso di multidex senza motivo potrebbe potenzialmente causare ANR per la tua app! Usa SOLO multidex se sei sicuro di averne bisogno e capisci di cosa si tratta.

Io stesso ho passato ore a cercare di risolvere questo problema senza multidex e volevo solo condividere i miei risultati, spero che questo aiuti


Brillante! Funziona perfettamente!
Stoefln,

1
Come fai a sapere quale dipendenza specifica causa il problema? Ho aggiunto com.facebook.android:audience-network-sdk:4.+e non posso costruire da allora.
Ciberman,

Mi hai salvato la giornata!
Rowan,

1
una risposta così stupida. se hai molte dipendenze avrai comunque bisogno di multi-dex. basta aggiungere librerie kotlin, un paio di servizi google ( com.google.android.gms:play-services-*:*), servizi firebase, crashlytics, gson, androidx (librerie di supporto), cardview, recyclerview, android.material: material. NON È POSSIBILE SENZA MULTI DEX (ti piace il maiuscolo? Non lo so, quindi per favore non rispondere a queste domande la prossima volta ...)
user155

Qualche corpo è intelligente qui! Esatto!, Non è un errore multidex, l'errore multidex è diverso e può derivare da alcune dipendenze. e @ user155, RUCHIR NON È RESPONSABILE DEL PROBLEMA DELLE VOSTRE DIPENDENZE! e mi piacciono i cappucci :)
Hossein

25

Aggiungi multiDexEnabled true nella configurazione predefinita a livello di app gradle.

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

24

Ho avuto il problema simile nella mia app. Ecco cosa ho fatto.

1.aggiungilo per build.gradle nel modulo: app

multiDexEnabled = true

Quindi il codice sarebbe come:

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

Questo ha funzionato per me. Spero che questo ti aiuti anche :)

Nello stesso progetto stavo usando anche Firebase . Pertanto, abilitare multiDexEnabled consente di risolvere un altro problema in Firebase per dispositivi Pre Lollipop . Alcune classi FireBase non sono state identificate. ( Impossibile ottenere il provider com.google.firebase.provider ).
Il metodo per risolverlo è spiegato qui.


minifyEnable true mi dà un'eccezione - Di seguito è la mia domanda, stackoverflow.com/questions/51720018/… Per favore, aiutatemi con questo.
Naveen,

21

Ho riscontrato questo errore durante l'aggiornamento di Google Play Services alla 9.0 dalla 7.5

Errore con quello sotto:

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

Quando sono passato a

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

Non ci sono errori Prova questo


1
grazie ho modificato la versione per compilare "com.google.android.gms: play-services: 8.4.0" penso che il volley utilizzi alcuni vecchi servizi di Google Play che non sono compatibili con i servizi di play:> 9.0
jai_b

3
Questa è stata la soluzione per me. Il problema è che diversi moduli di terze parti fanno riferimento a servizi di gioco con versioni diverse, quindi come ci si aspetta che queste versioni siano sempre sincronizzate? Dettaglio architettonico molto strano.
Ryan H.,

1
Non dovresti usare questo. Si prega di compilare selettivamente quelle librerie. developers.google.com/android/guides/setup#split
OneCricketeer

14

Dopo l'aggiornamento ad Android 3.4, ho iniziato a ricevere l'errore, ho provato tutte le soluzioni di cui sopra.

La causa principale del problema era che l'aggiornamento di Android Studio abilitava Instant Run .

Quindi, una delle soluzioni che puoi provare è Disabilitare Instant Run, se abilitato per te, risolto il mio problema.


1
Ho avuto lo stesso problema. Disabilitare Instant Run e abilitarlo di nuovo ha funzionato per me.
Fogh

1
Risolto anche il mio problema. Intendiamoci, Instant Run è utile, quindi spero che presto ci sarà una soluzione migliore
SimonH,

1
Aaaaarg lo abilitano sempre sull'aggiornamento e causa sempre così tanti problemi.
Oliver Dixon

1
Jep, questa è stata la causa del problema anche per me dopo aver inserito Firebase nel progetto, disabilitando Instant Run finalmente mi ha permesso di costruirlo, grazie!
Starwave,

1
Disabilitare la corsa istantanea ha funzionato per me con questo problema. Non ho più ricevuto l'errore.
Wesley affranca il

11

Bene, credo che la domanda abbia una risposta e venga accettata. Ma scriverò ciò che devo affrontare e come l'ho risolto.

Ho ricevuto anche lo stesso errore:

Errore: Esecuzione non riuscita per l'attività ': 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: processo 'comando' C: \ Programmi \ Java \ jdk1.8.0_60 \ bin \ java.exe '' terminato con valore di uscita diverso da zero 1

Non ho avuto la fortuna di applicare tutte le impostazioni e ho avuto successo. Ma quando ho provato a eseguire nuovamente il debug del progetto. Questa volta ho ricevuto tre errori (incluso sopra):

Errore: Avviso VM server Java HotSpot (TM) a 64 bit: CodeCache è pieno. Il compilatore è stato disabilitato.

e

Errore: Avviso VM server Java HotSpot (TM) a 64 bit: provare ad aumentare le dimensioni della cache del codice utilizzando -XX: ReservedCodeCacheSize =

Quindi cosa ho fatto? Vado solo su Android Studio:

File> Cache non valide / Riavvia ..> Invalida e riavvia

Soluzione rapida!

Nota extra:

Cosa ho trovato in Gradle Console:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generateDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Per eseguire dex nel processo, il demone Gradle necessita di un heap più grande. Attualmente ha circa 910 MB. Per build più veloci, aumenta la dimensione massima dell'heap per il demone Gradle a oltre 2048 MB. Per fare questo impostare org.gradle.jvmargs = -Xmx2048M nel progetto gradle.properties. Per ulteriori informazioni, consultare https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug FAILED

Maggiori informazioni qui su Oracle Blog


9

Ho appena scritto questo codice in gradle.properties ed è ok ora

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

8
  1. Rimuovi i file jar nel tuo gradle
  2. Sincronizzalo
  3. Copia quel vaso e sincronizzalo

Questo ha funzionato per me.


Puoi essere più specifico su quali file jar? Sono i file jar all'interno del nostro progetto gradle/wrapper?
HendraWD,

4
Non so di cosa si tratti con le persone che menzionano "i vasetti". Questo non spiega nulla.
Traccia

7

Ha funzionato per me solo usando un servizio specifico.

Ad esempio invece di usare:

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

Ero solito:

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


1
Anch'io. Ho risolto il problema sostituendo la compilazione 'com.google.android.gms: play-services: 10.2.0' con la compilazione 'com.google.android.gms: play-services-location: 10.2.0'
Sukhbir

6

So che è un po 'una vecchia domanda, ma comunque. Ogni volta che questo accade a me, è perché ho incluso tutte le librerie dei servizi di gioco. Basta cambiare play-services: xxx in play-service-: xxx nel file build.gradle (modulo)


6

Sol 1: In build.gradle:

defaultConfig {
    multiDexEnabled true
}

Pulisci il tuo progetto e ricostruiscilo.

Sol 2: in local.propertiesaggiunta,

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

Sol 3

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

Altrimenti aggiungi tutti e 3 nella tua applicazione.


5

solo l'impostazione di multiDexEnabled su true ha funzionato bene.

    defaultConfig 
    {
        multiDexEnabled true     
    }

3

Ho aggiornato jdk a 1.8.0_74, Android Studio 2.1 all'anteprima 1 e aggiunto al file dell'applicazione

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

2

Ho avuto lo stesso problema. Un giorno il programma funzionava perfettamente e non lo era. Ho verificato su Github le modifiche apportate. Per me il problema era su build.gradle (Modulo: app) nelle dipendenze:

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

Questa linea era quella che stava causando il problema. Dopo averla modificata, l'app stava funzionando di nuovo correttamente


1
Non ci sono altre possibilità>
Ajay Pandya,

1
Cambiandolo in cosa?
Ruchir Baronia,

1
L'ho cancellato (lo stavo controllando ora) e ha continuato a funzionare
Sara Alberola il

2

aggiungi questa riga nel tuo build.gradle

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

4
Quale "linea" hai aggiunto qui?
OneCricketeer,

2

In DefaultConfig Aggiungi multiDexEnabled = true

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

2

Quindi, il mio non è stato risolto aggiungendo il flag multiDexEnabled. In realtà era lì prima di ottenere il messaggio di errore.

Ciò che ha risolto l'errore per me è stato assicurarsi di utilizzare la stessa versione di tutte le librerie dei servizi di gioco. In una libreria avevo 11.8.0 ma nell'app che consumava la libreria stavo usando 11.6.0 e quella differenza era ciò che causava il messaggio di errore.

Quindi, invece di cambiare le tue librerie in una versione specifica come le risposte precedenti, forse vuoi verificare che stai utilizzando la stessa versione in tutto poiché il mixaggio delle versioni è esplicitamente scoraggiato da Android Studio dagli avvisi.


2

Dopo molti sforzi ho appena aggiunto le credenziali di seguito e ci riesco

1) app-> file 'proguard-rules.pro'

-ignorewarnings

-keep class * {
    public private *;
}

2) E aggiunto anche in app -> file 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

Per impostazione predefinita, Android Studio ha una dimensione heap massima di 1280 MB. Se stai lavorando su un progetto di grandi dimensioni o se il tuo sistema ha molta RAM, puoi migliorare le prestazioni aumentando la dimensione massima dell'heap per i processi di Android Studio, come l'IDE principale, il demone Gradle e il demone Kotlin.

Se si utilizza un sistema a 64 bit con almeno 5 GB di RAM, è anche possibile regolare manualmente le dimensioni dell'heap per il progetto. Per fare ciò, attenersi alla seguente procedura:

Fai clic su File> Impostazioni dalla barra dei menu (o Android Studio> Preferenze su macOS). Fai clic su Aspetto e comportamento> Impostazioni di sistema> Impostazioni memoria.

Per maggiori informazioni clicca

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

inserisci qui la descrizione dell'immagine


1

Basta cambiare i servizi di Google Play in gradle (app del modulo) da 9.xx alla versione inferiore 8.4.0 per me funziona


Questo è un segno che tutte le altre versioni di Google Play Services che usi non corrispondono.
OneCricketeer,


1

Se stai riscontrando il problema dopo aver aggiornato i servizi di Google Play 9.8.0 aggiungi questo alle tue dipendenze:

`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

Questo è successo a me anche su build di debug e ha cancellato tutte le cartelle di build a livello di modulo e di progetto e ha funzionato, sì proprio così.


Ha funzionato per me proprio ora.
WillC

1

Per coloro che usano ancora VS-TACO e hanno questo problema. Ciò accade a causa dell'incongruenza della versione dei file jar.

Devi ancora aggiungere correzioni al build.gradlefile nella platforms\androidcartella:

 defaultConfig {
        multiDexEnabled true 
 }

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

È meglio fare nel build-extras.gradlefile (che si collega automaticamente al file build.gradle) con tutte le altre modifiche se ci sono, ed eliminare tutto nella platforms/androidcartella, ma lasciare lì solo il build-extras.gradlefile. Quindi compila.


1

Nessuna di queste risposte ha funzionato per me. Sto usando Android Studio 3.4.1.

Sono stato in grado di costruire il progetto, ma Android Studio ha mostrato questo errore quando stavo per distribuirlo sul dispositivo mobile. Si scopre che è un errore "corse istantanee".

Segui questa risposta: https://stackoverflow.com/a/42695197/3197467


0

Davvero non so come, ma il bug è andato dopo che ho fatto tutto questo:

1

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

E aggiungi

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

Aggiorna git, jdk, cambia la posizione di JDK nella struttura del progetto

3

Elimina la cartella di build nel mio progetto

4

Pulisci e ricostruisci il progetto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.