web-dev-qa-db-ja.com

Sign Android App Bundle from Command Line

誰もがコマンドラインから新しいキーストアを使用して.aabファイルに署名する方法を知っていますか?ドキュメント here には、jarsignerを使用してコマンドラインからアプリバンドルに署名できることが記載されています。コマンドラインが見つかりませんか?誰もがコマンドラインを知っていますか?

バンドルをGoogle Playにアップロードしたときにこのエラーが発生しました:

You uploaded an APK with an invalid signature (learn more about signing). Error from apksigner:

次のコマンドを使用してApp Bundleに署名しようとします。

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore xample.jks bundle.aab keystoreAlias

どうもありがとうございました。

9
hallz12

おそらくあなたはすでに問題を解決する方法を見つけました。それにもかかわらず、将来的には誰かを助ける可能性があるため、同じ問題があり、ハッシュアルゴリズムをSHA-256に変更することでそれを克服することができたと私は言いたかっただけです。

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore xample.jks bundle.aab keystoreAlias

3
Jason

別の状況でも同じエラーが発生しました(または同じかもしれません)。

いくつかの変更を加えて*.aabバンドルを再パッケージ化しようとしました。最初は、Zipまたはjarを使用して、署名のないアーカイブを作成しました。その後、jarsignerツールを使用して署名しました。 *.aabbundletool を使用した通常のZipではないことがわかりました

> Java -jar bundletool.jar validate --bundle application.aab

[BT:0.12.0] Error: The App Bundle Zip file contains directory Zip entry 'base/' which is not allowed.
com.Android.tools.build.bundletool.model.exceptions.BundleFileTypesException$DirectoryInBundleException: The App Bundle Zip file contains directory Zip entry 'base/' which is not allowed.
        at com.Android.tools.build.bundletool.validation.BundleZipValidator.validateBundleZipEntry(BundleZipValidator.Java:29)
        at com.Android.tools.build.bundletool.validation.ValidatorRunner.lambda$validateBundleZipFile$1(ValidatorRunner.Java:47)
        at com.google.common.collect.ImmutableList.forEach(ImmutableList.Java:406)
        at com.Android.tools.build.bundletool.validation.ValidatorRunner.validateBundleZipFile(ValidatorRunner.Java:46)
        at com.Android.tools.build.bundletool.validation.AppBundleValidator.validateFile(AppBundleValidator.Java:92)
        at com.Android.tools.build.bundletool.commands.ValidateBundleCommand.execute(ValidateBundleCommand.Java:78)
        at com.Android.tools.build.bundletool.BundleToolMain.main(BundleToolMain.Java:92)
        at com.Android.tools.build.bundletool.BundleToolMain.main(BundleToolMain.Java:46)

そのため、このユーティリティを使用して*.aabを作成し、その後jarsignerを使用して署名しました。 base/*サブフォルダーの内容を別のアーカイブに圧縮する必要があります。

> Java -jar bundletool.jar build-bundle --modules base.Zip --output application.aab

> jarsigner -keystore $KEYSTORE -storetype $STORETYPE -storepass $STOREPASS -digestalg SHA1 -sigalg SHA256withRSA application.Zip $KEYALIAS

> Java -jar bundletool.jar validate --bundle application.aab

App Bundle information
------------
Feature modules:
    Feature module: base
            File: assets/META-INF/AIR/application.xml
            ...
0
mrchnk