24

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

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

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

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

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

非常感谢。

4

2 回答 2

28

可能您已经找到了解决问题的方法。尽管如此,由于它可能会在将来帮助某人,我只想说我遇到了同样的问题,将散列算法更改为SHA-256帮助我克服了它。

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

于 2019-01-26T05:55:58.467 回答
4

对于另一种情况(或者可能相同),我遇到了同样的错误。

我试图通过一些更改重新打包*.aab捆绑包。起初,我使用 zip 或 jar 来创建未签名的存档。之后,我使用jarsigner工具对其进行了签名。我发现这*.aab不是使用bundletool的普通 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
            ...
于 2020-01-15T11:27:05.213 回答