web-dev-qa-db-fra.com

IOException: impossible de trouver le code d'octet lors de la mise à niveau vers Android Studio 3.1

Hier, Google a annoncé qu'Android Studio 3.1 est désormais disponible au téléchargement sur le canal de publication stable. Alors j'ai décidé d'essayer. 

Avant cela, mon projet a été construit avec succès, mais après avoir mis à niveau AS avec 3.1 et l'outil de génération Gradle à com.Android.tools.build:gradle:3.1.0 (il a forcé la mise à niveau de Gradle wrapper 4.4), il a échoué avec cette exception donnée: 

Java.lang.RuntimeException: com.Android.build.api.transform.TransformException: Java.lang.RuntimeException: Java.lang.RuntimeException: Java.io.IOException: Failed to find byte code for Android/hardware/camera2/CameraManager$TorchCallback
    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.GeneratedMethodAccessor309.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:498)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.Java:73)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.Java:46)
    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:121)
    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:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:92)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:70)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.Java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:62)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.Java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:60)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:97)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.Java:87)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.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: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:248)
    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:241)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:230)
    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:626)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.Java:581)
    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: com.Android.build.api.transform.TransformException: Java.lang.RuntimeException: Java.lang.RuntimeException: Java.io.IOException: Failed to find byte code for Android/hardware/camera2/CameraManager$TorchCallback
    at com.Android.build.gradle.internal.transforms.InstantRunTransform.doTransform(InstantRunTransform.Java:312)
    at com.Android.build.gradle.internal.transforms.InstantRunTransform.transform(InstantRunTransform.Java:178)
    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)
    ... 47 more

Je fais déjà une reconstruction complète ou même File-> Invalidate Caches/Restart.., mais cela ne fonctionne toujours pas.

Quelqu'un sait comment résoudre ce problème? Je vous remercie.

34
nhoxbypass

Il y a un problème , qu’ils s’engagent à résoudre en 3.2. Jusque-là, vous devrez probablement revenir à Android Studio 3.0 si vous ne souhaitez pas désactiver l'exécution instantanée. Pourquoi ils ne veulent pas publier un correctif pour cela, je ne sais pas. Semble être un bug assez important.

Voir:

 enter image description here

Je suggère de voter pour le problème, peut-être que cela les incitera à publier le correctif plus tôt.

53
Malcolm

Comme @Malcolm l'a dit, il s'agit d'un problème lié à Android Studio 3.1.

Si vous ne souhaitez pas rétablir Android Studio 3.1 à 3.0, vous pouvez désactiver l'exécution instantanée.

Si vous ne souhaitez pas rétablir Android Studio 3.1 à la version 3.0 et que vous avez besoin d'Instant Run, vous pouvez éditer build.gradle et gradle-wrapper.properties comme ci-dessous:

  1. com.Android.tools.build:gradle:3.1.0 

    -> com.Android.tools.build:gradle:3.0.1

  2. distributionUrl = https://services.gradle.org/distributions/gradle-4.4-all.Zip

    -> distributionUrl = https://services.gradle.org/distributions/gradle-4.1-all.Zip

24
Veer

Désactiver Instant Run a fonctionné pour moi

10
Lagix

Tout d’abord, construisez le menu et nettoyez le projet. Après le nettoyage, reconstruisez le projet.

Si cela ne fonctionne pas, essayez d'ajouter cette ligne dans le fichier Gradle de construction:

 defaultConfig {
       multiDexEnabled true  
   }

Pour dépendance:

dependencies 
    {
       compile 'com.Android.support:multidex:1.0.0'
    }
1
0xalihn

J'ai eu le même problème, après avoir désactivé l'exécution instantanée .. L'application se bloquait au moment de l'exécution et a lancé une erreur noClassDefFound .. Dans mon cas, j'utilisais la fonction forEach lambda de Java 8 sur Hashmap au lieu de kotlin ..

Un article ici et une question similaire ici décrit ceci . Vous devez utiliser des parenthèses autour de la clé et de la valeur. par exemple:

dataSet.forEach { (header, dataList) ->    }

Cela garantira l’utilisation de la fonction kotlin.

1
Audi

Dégrader l’outil de construction Gradle de com.Android.tools.build:gradle:3.1.1 à com.Android.tools.build:gradle:3.0.1 me convient.

0
user2358763

si vous obtenez des erreurs inattendues/bizarres/stupides comme celle-ci, c'est probablement 

Course instantanée

le désactiver et réessayer

0
Ege Kuzubasioglu

Vous devez essayer de nettoyer et de reconstruire le projet. Si le problème persiste, supprimez le dossier .gradle de votre projet. Enfin, si aucun ne fonctionne, utilisez File-> Invalidate Caches/Restart.. à partir du menu Android Studio.

Comme @Malcolm l'a dit, le problème est lié à Android Studio 3.1.

Cela se produit toujours sur Android Studio 3.1.2 si j'essaie de fonctionner sur un appareil avec Android 5.1 alors que l'exécution instantanée est activée.

Invalider les caches, effacer/reconstruire le projet n'a pas fonctionné pour moi. 

Le problème a été résolu lorsque je suis passé sur un appareil doté d'Android 7.0, mais je pense qu'Android 6.0+ fonctionnerait également. Si vous parvenez à changer d'appareil, essayez-le. Pas besoin de désactiver Instant Run.

0
faridyagubbayli