Gestern gab Google bekannt, dass Android Studio 3.1 jetzt im stabilen Veröffentlichungskanal zum Download zur Verfügung steht. Also entschied ich mich, es auszuprobieren.
Vorher war mein Projekt erfolgreich erstellt worden, aber nachdem ich AS auf 3.1
und Gradle Build Tool auf com.Android.tools.build:gradle:3.1.0
aktualisiert hatte (es war gezwungen, Gradle Wrapper 4.4 zu aktualisieren), schlug es mit dieser Ausnahme fehl:
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
Ich mache bereits einen kompletten sauberen Umbau oder sogar File-> Invalidate Caches/Restart..
, aber es funktioniert immer noch nicht.
Weiß jemand, wie man das löst? Vielen Dank.
Es gibt ein Problem , das in 3.2 behoben werden soll. Bis dahin müssen Sie wahrscheinlich zu Android Studio 3.0 zurückkehren, wenn Sie den Sofortlauf nicht deaktivieren möchten. Warum sie dafür keinen Hotfix veröffentlichen wollen, weiß ich nicht. Scheint ein ziemlich wichtiger Fehler zu sein.
Sehen:
Ich schlage vor, für das Problem zu stimmen, vielleicht motiviert es sie, den Fix früher zu veröffentlichen.
Genau wie @ Malcolm gesagt hat, ist dies eine Ausgabe von Android Studio 3.1.
Wenn Sie Android Studio 3.1 nicht auf 3.0 zurücksetzen möchten, können Sie Instant Run deaktivieren.
Wenn Sie Android Studio 3.1 nicht auf 3.0 zurücksetzen möchten und Instant Run benötigen, können Sie build.gradle und gradle-wrapper.properties wie folgt bearbeiten:
com.Android.tools.build:gradle: 3.1.0
-> com.Android.tools.build:gradle :3.0.1
distributionUrl = https://services.gradle.org/distributions/gradle-4.4-all.Zip
-> distributionUrl = https://services.gradle.org/distributions/gradle-4.1-all.Zip
Das Deaktivieren von Instant Run funktionierte für mich
Gehen Sie zuerst zum Build-Menü und bereinigen Sie das Projekt. Nach dem Reinigen das Projekt neu aufbauen.
Wenn dies nicht funktioniert, fügen Sie diese Zeile in die Build-Gradle-Datei ein:
defaultConfig {
multiDexEnabled true
}
Für die Abhängigkeit:
dependencies
{
compile 'com.Android.support:multidex:1.0.0'
}
Ich hatte das gleiche Problem, nachdem ich Instant Run deaktiviert hatte. Die App stürzte zur Laufzeit ab und warf einen noClassDefFound
-Fehler. In meinem Fall verwendete ich die forEach
-Lambda-Funktion von Java 8 für Hashmap anstelle von kotlin one ..
Ein Beitrag hier und eine ähnliche Frage hier beschreibt dies . Sie müssen Klammern um den Schlüssel und den Wert verwenden. z.B:
dataSet.forEach { (header, dataList) -> }
Dadurch wird sichergestellt, dass die Kotlin-Funktion verwendet wird.
Das Gradle Build-Tool von com.Android.tools.build:gradle:3.1.1
auf com.Android.tools.build:gradle:3.0.1
herunterstufen funktioniert für mich.
wenn Sie unerwartete/komische/dumme Fehler wie diese erhalten, liegt dies höchstwahrscheinlich daran
Sofortiger Lauf
deaktivieren Sie es und versuchen Sie es erneut
Sie müssen das Projekt bereinigen und neu erstellen. Wenn das Problem weiterhin besteht, entfernen Sie den Ordner .gradle
in Ihrem Projekt. Wenn keiner funktioniert, verwenden Sie File-> Invalidate Caches/Restart..
aus dem Android Studio-Menü.
Wie @ Malcolm sagte, ist das Problem mit Android Studio 3.1 verbunden.
Es ist immer noch in Android Studio 3.1.2 der Fall, wenn ich versuche, auf einem Gerät mit Android 5.1 auszuführen, während Instant Run aktiviert ist.
Das Löschen von Caches, das Löschen/Wiederherstellen von Projekten hat für mich nicht funktioniert.
Das Problem wurde behoben, als ich auf ein Gerät mit Android 7.0 umgestiegen bin. Ich denke jedoch, dass Android 6.0+ auch funktionieren würde. Wenn Sie das Gerät wechseln können, probieren Sie es aus. Sie müssen Instant Run nicht deaktivieren.