在 Android Studio 中可以对 apk 进行签名,但为什么相同的密钥库在命令行上不起作用?

Signing apk works from Android Studio but why the same keystore do not work on command line?

我用于签署 Android 应用程序的密钥是使用 Android Studio 生成的。当我尝试从 Android Studio 生成签名的 APK 时,它工作正常。

但是,当我尝试使用 apksigner 工具进行签名时,相同的密钥不起作用。这是我正在使用的命令。

apksigner sign --ks mykey.jks --ks-key-alias MyAlias --out app-myapp-release.apk app-myapp-release-aligned.apk

我遇到以下错误:

java.io.IOException: 密钥库被篡改,或密码不正确

有什么建议吗?

** 更新** Android Studio 版本 2.2.3 密钥库是使用构建菜单中的 "Generate Signed APK" 对话框生成的。

(我不能写评论) 所以我添加了这个作为答案,希望这能帮助你解决你的问题。您是否查看了这些链接:

仅供参考:您的 JKS 文件 应包含 私钥 证书 意味着签署 APK,这里是 official link 了解更多详情。

我刚刚遇到了这个确切的问题,并且在尝试播放 apk 时遇到了更多问题。

尝试将这些选项添加到您的签名命令中:

--ks-pass stdin  --key-pass stdin

现在您通常可以按顺序输入密钥库密码和密钥(别名)密码。