web-dev-qa-db-fra.com

Android Studio - Java.io.IOException: Impossible de générer la signature v1

Je reçois cette erreur après la mise à jour de mon Android Studio vers toutes les nouvelles versions après 3.0 Canary 4. (J'utilise v3.0 car il est beaucoup plus rapide et il n'est pas nécessaire de prendre Jack pour Kotlin.)

Il semble y avoir un problème avec le flux de construction qui ne peut pas générer ou signer mon fichier APK pour la version de débogage et de publication.

J'ai également essayé de supprimer mon debug.keystore, de redémarrer AndroidStudio et le système (!!!), mais cela n'a pas résolu.

Voici un journal complet de Gradle:

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
Mohsen Mirhoseini

Après des recherches plus approfondies à l'aide de la commande gradle assemble --stacktrace, j'ai constaté que le problème venait du processus de compression zippé APK:

Erreur: org.gradle.tooling.BuildException: Impossible de générer la v1 erreur de signature: Java.io.IOException: Impossible de générer la signature v1 Erreur: com.Android.apksig.apk.ApkFormatException: Caractère non pris en charge 0x0d dans le nom de l'entrée Zip "assets/Icon?"

Il y avait un fichier nommé "Icon?" dans mon projet qui est un fichier MacOS qui indique l’icône du dossier et qui contient des caractères CR, LF.

J'ai supprimé le fichier et maintenant tout fonctionne bien.

Ce problème est apparu dans toutes les versions après Android Studio Canary 4 et je le signale à l'équipe d'Android Studio via ce fil de discussion https://issuetracker.google.com/issues/63885809

et ils ont mentionné:

3.0 Canary 4 est à peu près au moment où nous avons ajouté cette vérification "Caractère non pris en charge", c'est pourquoi cela se produit à partir de cette version.

Ils étudient davantage pour résoudre ce problème et j'espère que cette réponse aidera les autres à ne pas perdre un mois sans mettre à jour leur Android Studio. :)

6
Mohsen Mirhoseini

Au départ, j'ai commencé avec beaucoup d'erreurs "le nom de fichier doit se terminer par .xml ou .png (j'utilise également Mac OSX). pour la tâche ': app: packageDebug' n'a pas pu générer la signature v1 "

En fin de compte, vous avez un bon conseil d'essayer Build> Clean Project, puis de recompiler. Cela forcera IDE à examiner de nouveau les fichiers et à réessayer). Si vous avez supprimé les fichiers d'icônes, Android Studio devra peut-être réindexer le projet.

0
Han John Tse