web-dev-qa-db-ja.com

Android Studio-Java.io.IOException:v1署名の生成に失敗しました

私のAndroid Studioを3.0 Canary 4以降のすべての新しいバージョンにアップデートした後、このエラーが発生します(v3.0を使用しているため、より高速で、Kotlinをジャッ​​クする必要がありません。)

ビルドバージョンに、デバッグバージョンとリリースバージョンの両方のAPKファイルを生成または署名できないという問題があるようです。

私もdebug.keystoreを削除してAndroidStudioとシステム(!!!)を再起動しようとしましたが、解決しませんでした。

これが完全な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
13

gradle assemble --stacktraceコマンドを使用してさらに調査した結果、APKの圧縮プロセスに問題があることがわかりました。

エラー:org.gradle.tooling.BuildException:v1署名の生成に失敗しましたエラー:Java.io.IOException:v1署名の生成に失敗しましたエラー:com.Android.apksig.apk.ApkFormatException:Zipエントリ名 "assets /のサポートされていない文字0x0dアイコン?"

「アイコン?」という名前のファイルがありました。私のプロジェクトでは、フォルダのアイコンを示すMacOSファイルで、CR, LF文字が含まれています。

ファイルを削除しましたが、すべて正常に動作しています。

この問題はAndroid Studio Canary 4以降のすべてのバージョンで発生し、AndroidこのスレッドのStudioチームに報告します https:// issuetracker.google.com/issues/63885809

そして彼らは言及しました:

3.0 Canary 4は、「サポートされていない文字」チェックを追加した頃のことです。そのため、そのバージョン以降でこの問題が発生します。

彼らはこの問題を解決するためにさらに調査を行っており、この回答が他の人が1か月無駄にしないようにして、Android Studio。:)を更新しないことを願っています。

7

最初はたくさんのエラーで始まりました。「ファイル名は.xmlまたは.pngで終わる必要があります(私はMac OSXも使用しています)次に、散らばっているランダムなアイコンファイルの束を削除し始めました。新しいエラーが発生してしまい、「実行に失敗しましたタスク ':app:packageDebug'のv1シグネチャの生成に失敗しました

最後に、ビルド>プロジェクトのクリーンアップを試してから再コンパイルするようにアドバイスをもらいました。これにより、IDEでファイルをもう一度確認し、再試行します)。アイコンファイルを削除した場合、Android Studioでプロジェクトのインデックスを再作成する必要がある場合があります。

0
Han John Tse