从命令行签名Android App Bundle

hal*_*z12 7 android jarsigner android-app-bundle

有谁知道如何使用新的密钥库从命令行签名.aab文件?此处的文档提到,我们可以使用jarsigner从命令行对应用程序包进行签名。但是我找不到命令行?有人知道命令行吗?

将捆绑包上传到Google Play时出现此错误:

You uploaded an APK with an invalid signature (learn more about signing). Error from apksigner:
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下命令对应用程序捆绑包进行签名:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore xample.jks bundle.aab keystoreAlias
Run Code Online (Sandbox Code Playgroud)

非常感谢你。

Jas*_*son 5

可能您已经找到了解决问题的方法。但是,由于它可能会在将来对某人有所帮助,所以我只是想说我遇到了同样的问题,将哈希算法更改为SHA-256可以帮助我克服它。

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


小智 5

我在另一种情况下遇到了同样的错误(或者可能是相同的)。

我试图*.aab通过一些更改重新打包捆绑包。起初,我使用 zip 或 jar 来创建未签名的存档。之后,我使用jarsigner工具对其进行了签名。我发现这*.aab不是一个普通的zip使用bundletool

> 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)
Run Code Online (Sandbox Code Playgroud)

所以我使用该实用程序来创建*.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
            ...
Run Code Online (Sandbox Code Playgroud)