14

获得了签署 android unsigned release apk 文件的证书,所以我使用命令导入了 cer:

keytool -import -alias alias_name -file cer_name.cer -storepass changeit  -keystore my_keystore.keystore

但是在使用 android studio 签署应用程序时会产生错误:

Error:Execution failed for task ':packageDebug'.
> com.android.ide.common.signing.KeytoolException: Failed to read key alias_name from store "C:\Users\username\my_keystore.keystore": trusted certificate entries are not password-protected

我的推论说,因为密钥没有密码保护,所以我再次尝试并使用以下方法设置密钥的密码:

keytool -import -alias alias_name -file cer_name.cer -storepass changeit -keypass changeit -keystore my_keystore.keystore

但错误仍然存​​在。

我还尝试使用 jarsigner 进行手动操作:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my_keystore.keystore unsigned-release.apk alias_name

得到错误:

jarsigner: Certificate chain not found for: alias_name.  alias_name must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

请帮助我无法获得有关 Android apk 签名此错误的相关帖子

4

3 回答 3

14

*.cer 文件通常只包含证书,而不包含签署 APK 所需的私钥。

列出密钥库的内容:

keytool -list -v -keystore my_keystore.keystore

并寻找该Entry type:行(对应的别名)。值必须是PrivateKeyEntry,不是trustedCertEntry

于 2018-06-15T12:17:08.373 回答
10

我强烈推荐获取Keystore Explorer。当我遇到一些密钥库和证书问题时,这个程序不止一次救了我的命。它是免费和开源的,并且是一个易于导航的 GUI。它可以创建新的密钥对并将现有的密钥对导入您的密钥库。我大约 3 年前开始使用它,它仍然在我的开发工具文件夹中。

于 2018-06-18T03:06:22.583 回答
-2

如果您使用的是 android studio 有一个非常简单的解决方案来签署 apk 请按照以下步骤转到 Android 菜单-> Find Build -> Generate Signed APK... 出现新窗口后 ->单击 Create new... 按钮. 接下来输入如下所示的详细信息,然后单击OK -> Next。 在此处输入图像描述-> 选择您要存储.jks 文件以供将来使用的密钥库路径->设置所需的密码->设置别名->密码->填写证书详细信息->单击下一步

下一个窗口将如下图所示 在此处输入图像描述

选择您要签名的.apk 将存储的目录(否则它将在应用程序文件夹中生成->发布)->选择签名版本->单击完成

等到APK生成成功

于 2018-06-15T13:26:46.700 回答