Android- Erreur: l'exécution a échoué pour la tâche ': app: transformClassesWithDexForRelease'

191

Le problème est que je suis capable d'exécuter mon application lorsque je passe en debugmode, mais cela échoue lorsque je passe en releasemode.

Exception:

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

Quand j'ai exécuté la commande gradle build avec stacktrace, c'est ce que j'obtiens

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

j'utilise

  • Android Studio 2.0 bêta 6
  • Version Java: environnement d'exécution Java (TM) SE (build 1.8.0_73-b02)
  • Version de Gradle: com.android.tools.build:gradle:2.0.0-beta6
  • Et j'ai activé Multidex

Mon fichier 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'

}

Il semble que je puisse faire fonctionner ma version de version si j'en supprime minifyEnabled true. Pourquoi est-ce qu'il y a un autre moyen de le résoudre

Sheraz Ahmad Khilji
la source
pourriez-vous publier le fichier build.gradle de votre application?
Harisewak
@Harisewak J'ai mis à jour la question, veuillez y jeter un coup d'œil maintenant
Sheraz Ahmad Khilji
Oui @Sheraz, vous avez raison de dire que le passage de minifyEnabled à false résout le problème. J'ai lu ceci dans doc: «vous devez activer minifyEnabled pour activer la réduction du code, puis shrinkResources pour activer la réduction des ressources. Si vous n'avez pas déjà utilisé minifyEnabled, assurez-vous que cela fonctionne avant d'ajouter également shrinkResources, car vous devrez peut-être modifier votre fichier proguard-rules.pro pour vous assurer que toutes les méthodes auxquelles vous accédez avec réflexion, etc. sont répertoriées comme règles de conservation dans ce fichier. fichier '( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Voyez si c'est le cas.
Harisewak
1
@Harisewak cela ne résout toujours pas le problème si j'exécute la tâche avec le débogage, puis j'obtiens cette erreurUncaught 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
J'ai le même problème avec mon projet. Si j'utilise le com.android.tools.build:gradle:1.3.0, je suis capable de compiler. Dès que j'utilise le 2.0.0 cela me pose le même problème
Santacrab

Réponses:

186

je l'ai corrigé juste ce code.

local.properties

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

et vous devriez faire ce changement sur gradle

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

    multiDexEnabled true //important
}
aemre
la source
4
"local.properties" est-ce un nom de fichier ou une valeur de configuration? Où (par exemple: dans quel dossier) se trouve-t-il dans le projet?
Ulysses Alves
1
Le fichier local.properties va au niveau racine du projet. si vous avez un problème avec multiDex -> developer.android.com/studio/build/multidex.html
aemre
Je viens d'insérer multiDexEnabled true dans mon build.gradle et la magie a été faite. Je vous remercie.
Marcelo Gumiero
Je ne sais pas ce que tout cela signifie, mais cela a fonctionné pour moi!
DaveNOTDavid
Sur API <21, multiDexEnabledsans étendre la Applicationclasse de MultiDexApplicationconduira à NoClassDefFoundErrors.
Miha_x64
82

Si vous faites multiDexEnabled = truedans defaultConfig de l'application, vous obtiendrez le résultat souhaité.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}
Rahul
la source
Ce n'est pas la seule étape pour autoriser Multidex. Et vous n'en avez besoin que lorsque vous voyez un DexException, de toute façon. developer.android.com/studio/build/multidex.html
OneCricketeer
45

Pour moi, le problème a été résolu après avoir supprimé le jarfichier de mon projet. il semble que l'un des jarfichiers de mon projet utilisait une ancienne version de google play services.

Sheraz Ahmad Khilji
la source
même problème avec jackrabbit-standalone-2.12.2.jar. Si je l'ajoute au projet, le problème se pose.
Alexeev Valeriy
1
@MikeOx J'ai mis à jour certains outils Android, et en conséquence je me suis retrouvé avec deux versions de quelques fichiers jar, par exemple mockable-android-24.jar et mockable-android-25.jar. La suppression des plus anciens a corrigé ces erreurs de construction pour moi.
parvus
mais je n'utilise aucun fichier jar alors pourquoi je suis confronté à ce problème
M. Mad
15
Pouvez-vous s'il vous plaît fournir plus de détails sur cette solution
Ivan Milisavljevic
@IvanMilisavljevic Vous pouvez utiliser Gradle maintenant, pas des fichiers JAR. développeurs.google.com
android
39

J'ai également reçu la même erreur:

Erreur: l'exécution a échoué pour la tâche «: 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: Process 'command' C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '' terminé avec une valeur de sortie différente de zéro 1

Eh bien, j'ai corrigé cela à l'aide des étapes suivantes:

  1. Ouvrez build.gradle de votre application (pas celui de la racine du projet) et ajoutez:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Essayez à nouveau votre build.

Remarque: 4g équivaut à 4 gigaoctets et il s'agit d'une taille de tas maximale pour l'opération dex.

PN10
la source
J'ai sauvé ma journée! À votre santé!
devhermluna
Le meilleur ... J'erre depuis des heures ... merci!
MbaiMburu
33

PAS BESOIN DE MULTIDEX, JE RÉPÉTE, PAS BESOIN DE MULTIDEX


Permettez-moi d'élaborer: Multidex est essentiellement un outil fourni avec Android, et si vous le définissez sur true, les applications avec plus de 64000 méthodes sont capables de compiler en utilisant un processus de construction légèrement modifié. Cependant, vous ne devez utiliser multidex que si votre erreur ressemble à ceci:

problème d'écriture de sortie: trop de références de champ: 131000; max est 65536. Vous pouvez essayer d'utiliser l'option --multi-dex.

ou comme ça

Échec de la conversion au format Dalvik: impossible d'exécuter dex: ID de méthode absent de [0, 0xffff]: 65536

Mais ce n'est pas le cas ici! Le problème ici (pour moi au moins) est causé par les dépendances de votre fichier build.gradle.

LA SOLUTION: utilisez des dépendances spécifiques - ne vous contentez pas d'importer une section entière de dépendances!

Par exemple, si vous avez besoin de la dépendance Play Services pour l'emplacement, importez-la uniquement pour l'emplacement.

FAIRE:

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

NE PAS:

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

Un autre problème qui pourrait en être la cause peut être une sorte de bibliothèque externe que vous utilisez, qui fait référence à une version antérieure de votre dépendance. Suivez ces étapes dans ce cas:

  1. Accédez au gestionnaire de SDK et installez les mises à jour de vos dépendances
  2. Assurez-vous que votre fichier build.gradle affiche la dernière version. Pour obtenir la dernière version, utilisez ce lien: https://developers.google.com/android/guides/setup
  3. Modifiez votre bibliothèque (ou installez une version mise à jour si elle existe), pour référencer la dernière version

Je sais que cette question est ancienne, mais je dois obtenir cette réponse, car l'utilisation de multidex sans raison pourrait potentiellement causer des ANR pour votre application! N'utilisez le multidex que si vous êtes sûr d'en avoir besoin et que vous comprenez ce que c'est.

J'ai moi-même passé des heures à essayer de résoudre ce problème sans multidex, et je voulais juste partager mes découvertes - j'espère que cela vous aidera

Ruchir Baronia
la source
Brillant! Fonctionne parfaitement!
stoefln
1
Comment savez-vous quelle dépendance spécifique cause le problème? J'ai ajouté com.facebook.android:audience-network-sdk:4.+et je ne peux pas construire depuis.
Ciberman
Tu as sauvé ma journée!
Rowan
1
une réponse si stupide. si vous avez beaucoup de dépendances, vous aurez de toute façon besoin de multi dex. il suffit d'ajouter des bibliothèques kotlin, quelques services google ( com.google.android.gms:play-services-*:*), des services firebase, crashlytics, gson, androidx (bibliothèques de support), cardview, recyclerview, android.material: material. C'EST PAS POSSIBLE SANS MULTI DEX (est-ce que tu aimes le capslock? Je n'aime pas, alors s'il te plaît, ne réponds pas à ces questions ici la prochaine fois ...)
user155
Certains corps sont intelligents ici! Exactement!, Ce n'est pas une erreur multidex, l'erreur multidex est différente et elle peut provenir de certaines dépendances. et @ user155, RUCHIR N'EST PAS RESPONSABLE DE VOTRE PROBLÈME DE DÉPENDANCES! et j'aime les capslocks :)
Hossein
25

Ajoutez multiDexEnabled true dans votre defaultConfig au niveau de l'application gradle.

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

J'ai eu le même problème dans mon application. Voici ce que j'ai fait.

1. ajoutez ceci pour build.gradle dans le module: app

multiDexEnabled = true

Donc, le code serait comme:

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

Cela a fonctionné pour moi. J'espère que cela vous aidera aussi :)

Dans le même projet, j'utilisais aussi Firebase . Donc, l'activation de multiDexEnabled laisse un autre problème dans Firebase pour les périphériques Pre Lollipop . Certaines classes FireBase n'ont pas été identifiées. ( Impossible d'obtenir le fournisseur com.google.firebase.provider ).
Méthode de résolution expliquée ici.

Thilina Kj
la source
minifyEnable true me donne une exception - Voici ma question, stackoverflow.com/questions/51720018/… S'il vous plaît, aidez-moi avec ceci.
Naveen
21

J'ai eu cette erreur lors de la mise à niveau des services Google Play vers 9.0 de 7.5

Avoir une erreur avec ci-dessous un:

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

Quand j'ai changé pour

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

Il n'y a pas d'erreur. Essaye ça

Kalaivanan
la source
1
merci, j'ai changé la version pour compiler 'com.google.android.gms: play-services: 8.4.0' je pense que volley utilise certains anciens services de jeu de Google qui ne sont pas compatibles avec les services de jeu:> 9.0
jai_b
3
C'était la solution pour moi. Le problème est que plusieurs modules tiers font référence à des services de jeu avec des versions différentes, alors comment s'attend-on à ce que ces versions soient synchronisées tout le temps? Détail architectural très étrange.
Ryan H.
1
Vous ne devriez pas utiliser cela. Veuillez compiler sélectivement ces bibliothèques. développeurs.google.com
android
14

Après la mise à jour vers Android 3.4, j'ai commencé à recevoir l'erreur, j'ai essayé toutes les solutions ci-dessus.

La cause première du problème était que la mise à jour d'Android Studio a activé Instant Run .

Par conséquent, l'une des solutions que vous pouvez essayer est de désactiver Instant Run, si elle est activée pour vous, a résolu mon problème.

devDeejay
la source
1
J'ai eu le même problème. Désactiver Instant Run et l'activer à nouveau a fonctionné pour moi.
Fogh
1
Correction de mon problème aussi. Remarquez - Instant Run est utile alors j'espère qu'il y
aura
1
Aaaaarg, ils activent toujours cela sur la mise à jour et cela cause toujours tellement de problèmes.
Oliver Dixon
1
Jep, c'était la cause du problème pour moi aussi après avoir mis Firebase dans le projet, la désactivation d'Instant Run me permet enfin de le construire, merci!
Starwave
1
La désactivation de l'exécution instantanée a fonctionné pour moi avec ce problème. Je n'ai pas eu à nouveau l'erreur.
wesley franks le
11

Eh bien, je crois que la question est répondue et acceptée. Mais je vais écrire ce à quoi je suis confronté et comment je l'ai résolu.

J'ai également reçu la même erreur:

Erreur: l'exécution a échoué pour la tâche «: 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: Process 'command' C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '' terminé avec une valeur de sortie différente de zéro 1

Je n'ai pas eu la chance d'appliquer tous les paramètres et j'ai eu du succès. Mais quand j'ai essayé de déboguer à nouveau le projet. Cette fois, j'ai trois erreurs (y compris ci-dessus):

Erreur: Avertissement de machine virtuelle Java HotSpot (TM) 64 bits: CodeCache est plein. Le compilateur a été désactivé.

et

Erreur: Avertissement de la machine virtuelle Java HotSpot (TM) 64 bits: essayez d'augmenter la taille du cache de code à l'aide de -XX: ReservedCodeCacheSize =

Alors qu'est-ce que j'ai fait? Je vais simplement sur Android Studio:

Fichier> Invalidate Caches / Restart ..> Invalidate & Restart

Solution rapide!

Remarque supplémentaire:

Ce que j'ai trouvé dans Gradle Console:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generateDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Pour exécuter dex en cours, le démon Gradle a besoin d'un tas plus grand. Il compte actuellement environ 910 Mo. Pour des compilations plus rapides, augmentez la taille maximale du tas pour le démon Gradle à plus de 2048 Mo. Pour ce faire, définissez org.gradle.jvmargs = -Xmx2048M dans le projet gradle.properties. Pour plus d'informations, consultez https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug FAILED

En savoir plus à ce sujet ici sur le blog Oracle

fWd82
la source
9

Je viens d'écrire ce code dans gradle.properties et ça va maintenant

org.gradle.jvmargs=-XX:MaxHeapSize\=2048m -Xmx2048m
Selim Özbudak
la source
8
  1. Supprimez les fichiers jar dans votre gradle
  2. Synchronisez-le
  3. Copiez ce pot et synchronisez-le

Cela a fonctionné pour moi.

Bharat
la source
Pouvez-vous être plus précis sur les fichiers JAR? S'agit-il des fichiers JAR de notre projet gradle/wrapper?
HendraWD
4
Je ne sais pas ce que c'est avec les gens qui mentionnent "les pots". Cela n'explique rien.
Trace du
7

Cela a fonctionné pour moi uniquement en utilisant un service spécifique.

Par exemple au lieu d'utiliser:

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

J'ai utilisé:

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

Marco Muñoz
la source
1
Pareil ici. J'ai résolu le problème en remplaçant compile 'com.google.android.gms: play-services: 10.2.0' par compile 'com.google.android.gms: play-services-location: 10.2.0'
Sukhbir
6

Je sais que c'est un peu une vieille question, mais quand même. Chaque fois que cela m'arrive, c'est parce que j'ai inclus toutes les bibliothèques de services de jeu. Changez simplement play-services: xxx en play-service-: xxx dans le fichier build.gradle (module)

KostasKol
la source
6

Sol 1: Dans build.gradle:

defaultConfig {
    multiDexEnabled true
}

Nettoyez votre projet et reconstruisez-le.

Sol 2: en local.propertiesplus,

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

Sol 3

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

Sinon, ajoutez les 3 dans votre application.

Crime_Master_GoGo
la source
5

juste définir le multiDexEnabled sur true fonctionnait bien.

    defaultConfig 
    {
        multiDexEnabled true     
    }
Wanjiku
la source
3

J'ai mis à jour jdk vers 1.8.0_74, Android-studio vers 2.1 preview 1 et ajouté au fichier d'application

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
Yuri Misyac
la source
2

J'ai eu le même problème. Un jour, le programme fonctionnait parfaitement, et ce qui suit ne l'était pas. J'ai vérifié sur Github les modifications que j'ai apportées. Pour moi, le problème était sur build.gradle (Module: app) dans les dépendances:

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

Cette ligne était celle qui causait le problème. Après l'avoir modifiée, l'application fonctionnait à nouveau correctement

Sara Alberola
la source
1
Ne fonctionne pas d'autre chance>
Ajay Pandya
1
Le changer en quoi?
Ruchir Baronia
1
Je l'ai effacé (je le vérifiais maintenant) et il a continué à fonctionner
Sara Alberola
2

ajoutez cette ligne dans votre build.gradle

 defaultConfig {
    ............
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    compileOptions.encoding = 'ISO-8859-1'
    multiDexEnabled true
}
Ganesh P
la source
4
Quelle «ligne» avez-vous ajoutée ici?
OneCricketeer
2

Dans DefaultConfig, ajoutez multiDexEnabled = true

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

Donc, le mien n'a pas été résolu en ajoutant l'indicateur multiDexEnabled. Il était en fait là avant de recevoir le message d'erreur.

Ce qui a résolu l'erreur pour moi était de m'assurer que j'utilisais la même version de toutes les bibliothèques de services de lecture. Dans une bibliothèque, j'avais 11.8.0 mais dans l'application qui consomme la bibliothèque, j'utilisais 11.6.0 et cette différence était la cause du message d'erreur.

Ainsi, au lieu de changer vos bibliothèques vers une version spécifique comme les réponses précédentes, vous voudrez peut-être vérifier que vous utilisez la même version partout, car le mélange de versions est explicitement déconseillé par Android Studio par les avertissements.

kriztho
la source
2

Après beaucoup d'efforts, je viens d'ajouter ci-dessous les informations d'identification et je réussis

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

-ignorewarnings

-keep class * {
    public private *;
}

2) Et également ajouté dans l'application -> fichier 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'
}
Kush
la source
2

Par défaut, Android Studio a une taille de tas maximale de 1280 Mo. Si vous travaillez sur un grand projet ou que votre système dispose de beaucoup de RAM, vous pouvez améliorer les performances en augmentant la taille maximale du tas pour les processus Android Studio, tels que l'EDI principal, le démon Gradle et le démon Kotlin.

Si vous utilisez un système 64 bits doté d'au moins 5 Go de RAM, vous pouvez également ajuster manuellement les tailles de tas de votre projet. Pour ce faire, procédez comme suit:

Cliquez sur Fichier> Paramètres dans la barre de menus (ou sur Android Studio> Préférences sous macOS). Cliquez sur Apparence et comportement> Paramètres système> Paramètres de mémoire.

Pour plus d'informations, cliquez sur

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

entrez la description de l'image ici

vinod
la source
1

Il suffit de changer les services google play dans gradle (module app) de 9.xx à la version inférieure 8.4.0 est un travail pour moi

Nazwa Asshiba
la source
Cela indique que toutes les autres versions des services Google Play que vous utilisez ne correspondent pas.
OneCricketeer
1

J'ai corrigé le mien que j'ai ajouté à mon projet > application > libs android volley.jar et mon problème a été résolu

MarJose
la source
Vous n'avez pas besoin d'un fichier JAR. compile 'com.android.volley:volley:1.0.0' developer.android.com/training/volley/index.html
OneCricketeer
1

Si vous rencontrez le problème après la mise à jour des services google play 9.8.0, ajoutez ceci à vos dépendances:

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

}
ismail alaoui
la source
1

Cela m'est arrivé même sur les versions de débogage et j'ai simplement effacé tous les dossiers de construction au niveau du module et au niveau du projet et cela a fonctionné, ouais juste comme ça.

Panduka DeSilva
la source
A travaillé pour moi tout à l'heure.
WillC
1

Pour ceux qui utilisent encore VS-TACO et qui ont ce problème. Cela se produit en raison d'une incohérence de version d'un fichier jar.

Vous devez toujours ajouter des corrections au build.gradlefichier dans le platforms\androiddossier:

 defaultConfig {
        multiDexEnabled true 
 }

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

Il est préférable de faire dans le build-extras.gradlefichier (qui est automatiquement lié au fichier build.gradle) avec toutes vos autres modifications s'il y en a, et de tout supprimer dans le platforms/androiddossier, mais ne laissez là que le build-extras.gradlefichier. Ensuite, compilez simplement.

Serg Tomcat
la source
1

Aucune de ces réponses n'a fonctionné pour moi. J'utilise Android Studio 3.4.1.

J'ai pu créer le projet, mais le studio Android affiche cette erreur lorsque j'allais le déployer sur un appareil mobile. Il s'avère que c'est une faute de "course instantanée".

Suivez cette réponse: https://stackoverflow.com/a/42695197/3197467

Keivan
la source
0

Je ne sais vraiment pas comment mais le bogue est parti après avoir fait tout cela:

1

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

Et ajouter

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

Mettre à jour git, jdk, changer l'emplacement du JDK dans la structure du projet

3

Supprimer le dossier de construction dans mon projet

4

Nettoyer et reconstruire le projet

Kyo Huu
la source