wake-up-neo.com

Android Studio - Java.io.IOException: V1-Signatur konnte nicht generiert werden

Ich erhalte diese Fehlermeldung, nachdem ich mein Android Studio nach 3.0 Canary 4 auf alle neuen Versionen aktualisiert habe.

Anscheinend gibt es ein Problem mit dem Build-Fluss, das meine APK-Datei nicht für Debug- und Release-Version generieren oder signieren kann.

Ich habe auch versucht, meinen debug.keystore zu löschen, AndroidStudio und das System (!!!) neu zu starten, aber das Problem wurde nicht gelöst.

Hier ist ein vollständiges Gradle-Log:

FAILURE: Build failed with an exception.

* What went wrong: Execution failed for task ':chris-app:packageDemoDebug'.
Java.io.IOException: Failed to generate v1 signature

* Try: Run with --info or --debug option to get more log output.

* Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':chris-app:packageDemoDebug'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:100)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:70)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:64)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.Java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:88)
        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:243)
        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:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:107)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:236)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:225)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.Java:124)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.Java:80)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:105)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:99)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.Java:625)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.Java:580)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.Java:99)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.Java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.Java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.Java:55) Caused by: org.gradle.tooling.BuildException: Java.io.IOException: Failed to generate v1 signature
        at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$10(OutputScope.Java:240)
        at com.Android.build.gradle.internal.scope.OutputScope.parallelForEachOutput(OutputScope.Java:235)
        at com.Android.build.gradle.internal.scope.OutputScope.parallelForEachOutput(OutputScope.Java:196)
        at com.Android.build.gradle.internal.scope.OutputScope.parallelForEachOutput(OutputScope.Java:180)
        at com.Android.build.gradle.tasks.PackageAndroidArtifact.doFullTaskAction(PackageAndroidArtifact.Java:466)
        at com.Android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.Java:80)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.Java:73)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.Java:168)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.Java:134)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.Java:121)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.Java:122)
        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:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:107)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.Java:111)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:92)
        ... 27 more Caused by: Java.lang.RuntimeException: Java.io.IOException: Failed to generate v1 signature Caused by: Java.io.IOException: Failed to generate v1 signature
        at com.Android.apkzlib.sign.SigningExtension.onOutputZipReadyForUpdate(SigningExtension.Java:297)
        at com.Android.apkzlib.sign.SigningExtension.access$200(SigningExtension.Java:55)
        at com.Android.apkzlib.sign.SigningExtension$1.lambda$beforeUpdate$2(SigningExtension.Java:175)
        at com.Android.apkzlib.Zip.ZFile.notify(ZFile.Java:2099)
        at com.Android.apkzlib.Zip.ZFile.update(ZFile.Java:871)
        at com.Android.apkzlib.Zip.ZFile.close(ZFile.Java:1161)
        at com.Android.apkzlib.zfile.ApkZFileCreator.close(ApkZFileCreator.Java:172)
        at com.google.common.io.Closer.close(Closer.Java:216)
        at com.Android.builder.internal.packaging.IncrementalPackager.close(IncrementalPackager.Java:332)
        at com.Android.build.gradle.tasks.PackageAndroidArtifact.doTask(PackageAndroidArtifact.Java:698)
        at com.Android.build.gradle.tasks.PackageAndroidArtifact.splitFullAction(PackageAndroidArtifact.Java:520)
        at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$6(OutputScope.Java:185)
        at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$7(OutputScope.Java:202)
        at com.Android.build.gradle.internal.scope.OutputScope.lambda$null$8(OutputScope.Java:224) "
        at com.Android.apksig.internal.apk.v1.V1SchemeSigner.checkEntryNameValid(V1SchemeSigner.Java:406)
        at com.Android.apksig.internal.apk.v1.V1SchemeSigner.generateManifestFile(V1SchemeSigner.Java:373)
        at com.Android.apksig.internal.apk.v1.V1SchemeSigner.sign(V1SchemeSigner.Java:253)
        at com.Android.apksig.DefaultApkSignerEngine.outputJarEntries(DefaultApkSignerEngine.Java:372)
        at com.Android.apkzlib.sign.SigningExtension.onOutputZipReadyForUpdate(SigningExtension.Java:295)
        ... 13 more


BUILD FAILED in 2m 49s
10

Nach weiteren Untersuchungen mit dem Befehl gradle assemble --stacktrace fand ich heraus, dass das Problem beim APK-Zippvorgang liegt:

Fehler: org.gradle.tooling.BuildException: Fehler beim Generieren von v1 Signaturfehler: Java.io.IOException: V1-Signatur konnte nicht generiert werden Fehler: com.Android.apksig.apk.ApkFormatException: Nicht unterstütztes Zeichen 0x0d im Zip-Eintragsnamen "assets/Icon?"

Es gab eine Datei mit dem Namen "Icon?" In meinem Projekt ist dies eine MacOS-Datei, die das Ordnersymbol angibt und CR, LF-Zeichen enthält.

Ich habe die Datei gelöscht und jetzt funktioniert alles gut.

Dieses Problem wurde in allen Versionen nach Android Studio Canary 4 angezeigt und ich berichte das Problem dem Android Studio-Team in diesem Thread https://issuetracker.google.com/issues/63885809

und sie erwähnten:

3.0 Canary 4 ist ungefähr zu dem Zeitpunkt, an dem wir die Option "Nicht unterstützter Charakter" hinzugefügt haben. Deshalb geschieht dies ab dieser Version.

Sie untersuchen mehr, um dieses Problem zu lösen, und ich hoffe, dass diese Antwort anderen hilft, keinen Monat zu verschwenden, indem sie ihr Android Studio nicht aktualisieren. :)

6

Anfangs begann ich mit vielen Fehlern. "Dateiname muss auf .xml oder .png enden. (Ich verwende auch Mac OSX.) Dann löschte ich eine Reihe von zufälligen Symboldateien, die ich verstreut gefunden hatte für Task ': app: packageDebug' konnte keine v1-Signatur generieren "

Am Ende bekam ich einen guten Rat, um Build> Clean Project zu testen und dann neu zu kompilieren. Dadurch wird die IDE gezwungen, die Dateien erneut zu überprüfen und es erneut zu versuchen. Wenn Sie die Symboldateien gelöscht haben, muss Android Studio das Projekt möglicherweise neu indizieren.

0
Han John Tse