Le projet est construit sans erreur à partir d'Android Studio -> Construire -> Construire des APK et, après l'installation, il fonctionne correctement. Mais l’exécution du projet avec une configuration d’exécution génère l’erreur suivante:
Failed to execute aapt
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':MyProject:transformDexWithInstantRunDependenciesApkForFlavorDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:103)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:73)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.Java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:59)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.Java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:59)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:101)
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.Java:44)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.Java:91)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.Java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.Java:59)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.Java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.Java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.Java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.Java:256)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:249)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:238)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.Java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.Java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.Java:663)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.Java:597)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.Java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.Java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.Java:46)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.Java:55)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: Java.lang.RuntimeException: com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Failed to execute aapt
at com.Android.builder.profile.Recorder$Block.handleException(Recorder.Java:55)
at com.Android.builder.profile.ThreadRecorder.record(ThreadRecorder.Java:104)
at com.Android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.Java:212)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:497)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.Java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.Java:50)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.Java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.Java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.Java:124)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.Java:113)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:95)
... 33 more
Caused by: com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Failed to execute aapt
at com.Android.build.gradle.internal.transforms.InstantRunDependenciesApkBuilder.transform(InstantRunDependenciesApkBuilder.Java:152)
at com.Android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.Java:221)
at com.Android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.Java:217)
at com.Android.builder.profile.ThreadRecorder.record(ThreadRecorder.Java:102)
... 49 more
Caused by: com.Android.ide.common.process.ProcessException: Failed to execute aapt
at com.Android.builder.core.AndroidBuilder.processResources(AndroidBuilder.Java:809)
at com.Android.builder.core.AndroidBuilder.processResources(AndroidBuilder.Java:797)
at com.Android.build.gradle.internal.transforms.InstantRunSplitApkBuilder.generateSplitApkResourcesAp(InstantRunSplitApkBuilder.Java:373)
at com.Android.build.gradle.internal.transforms.InstantRunSplitApkBuilder.generateSplitApkResourcesAp(InstantRunSplitApkBuilder.Java:321)
at com.Android.build.gradle.internal.transforms.InstantRunSplitApkBuilder.generateSplitApk(InstantRunSplitApkBuilder.Java:210)
at com.Android.build.gradle.internal.transforms.InstantRunDependenciesApkBuilder.transform(InstantRunDependenciesApkBuilder.Java:149)
... 52 more
Caused by: Java.util.NoSuchElementException
at com.google.common.collect.AbstractIndexedListIterator.next(AbstractIndexedListIterator.Java:80)
at com.google.common.collect.Iterators.getOnlyElement(Iterators.Java:315)
at com.google.common.collect.Iterables.getOnlyElement(Iterables.Java:263)
at com.Android.builder.internal.aapt.v1.AaptV1.makePackageProcessBuilder(AaptV1.Java:202)
at com.Android.builder.internal.aapt.AbstractProcessExecutionAapt.makeValidatedPackage(AbstractProcessExecutionAapt.Java:67)
at com.Android.builder.internal.aapt.AbstractAapt.link(AbstractAapt.Java:34)
at com.Android.builder.core.AndroidBuilder.processResources(AndroidBuilder.Java:807)
... 57 more
L'erreur est apparue après le déplacement vers Android Studio 3.1
, Gradle 4.4
et l'ajout de apply plugin: 'io.fabric'
au fichier build.gradle. La configuration d'exécution a bien fonctionné juste avant la mise à jour. Le projet est compatible JavaVersion.VERSION_1_8. J'ai également supprimé Android.enableAapt2 = false
de gradle.properties, car il est obsolète. Des idées qui pourraient causer ça?
UPDATE: gradle.properties
a été mis en cache dans C:\Users\MyUser\.gradle\gradle.properties
pour Windows. Évidemment, ce fichier a été utilisé même lorsque je suis passé au wrapper. Les modifications apportées au gradle.properties
du projet n'ont eu aucun effet jusqu'à ce que je supprime le cache. Lorsque Android.enableAapt2 = false
a été supprimé, l'avertissement a disparu et je pouvais activer l'exécution instantanée.
C'est un bug dans le code du plugin Gradle qui appelle AAPT1. Il a été corrigé mais pas choisi, il devrait être disponible dans la prochaine version publiée (il devrait être corrigé dans 3.2 canari 3 et plus récent).
Cela ne concerne que AAPT1. Si vous supprimez l'indicateur Android.enableAapt2 = false, le code ne rencontrera pas ce chemin de code (vérifiez votre fichier gradle.properties et les arguments supplémentaires que vous transmettez à Gradle à partir d'Android Studio).
Je ai fait ci-dessous et il a résolu ce problème:
Dans le fichier gradle.properties:
Android.enableAapt2 = false
J'ai désactivé Instant Run. (Important)
Dans vos propriétés de gradle: supprimez Android.enableAapt2 = false et mettez à niveau buildToolVersion dans votre application build.gradle et dans tous les autres modules (le cas échéant).
Exécutez la commande gradlew --info assembleDebug dans votre terminal et recherchez les autres erreurs. Si vous les trouvez, corrigez-les manuellement . Dans mon cas, une image de 9 correctifs était à l'origine de tous les problèmes. .
Essayez de nettoyer et de reconstruire votre projet.
Ou
Essayez de désactiver la fonctionnalité d'exécution instantanée et voyez si cela fonctionne.
Ou
Essayez d'activer multiDexEnabled.
defaultConfig {
multiDexEnabled true
}
Ou
Fichier -> Invalider les caches et redémarrer
Vous pouvez utiliser l’un des moyens suivants pour résoudre le problème:
For Android studio 3.1 or <3.2
Android.enableAapt2=false
For Android studio 3.2 or later
Android.enableAapt2=true
Ouvrez l'onglet Fichier puis cliquez sur Invalidate Caches\Restart .Cela a fonctionné pour moi :).