我正在尝试对使用Processing 创建的Android apk 进行签名。
这就是我所做的(基于此:http://www.akeric.com/blog/?p=1352):
keytool -genkey -v -keystore myapp-release-key.keystore -alias myname -keyalg RSA -keysize 2048 -validity 10000
ant release
jarsigner -verbose -keystore myapp-release-key.keystore <PATH>/android/bin/<APPNAME>-release-unsigned.apk myname
jarsigner -verify <PATH>/android/bin/<APPNAME>-release-unsigned.apk
zipalign -v 4 bin/<APPNAME>-release-unsigned.apk bin/<APPNAME>-release.apk
adb install bin/<APPNAME>-release.apk
但是我收到错误:
INSTALL_PARSE_FAILED_NO_CERTIFICATES
jarsigner 验证终止于:
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2042-09-08) or after any future revocation date.
对于哪里出了问题有什么想法吗?与这些警告有关吗?
最佳答案
请确保将以下 2 个选项添加到您的 jarsigner 命令中:-sigalg SHA1withRSA -digestalg SHA1
,即使您在生成 key 时已经指定了类似的内容。像这样:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myapp-release-key.keystore <PATH>/android/bin/<APPNAME>-release-unsigned.apk myname
我花了很长时间才意识到这些不是可选的......文档在这一点上绝对不清楚。
希望有帮助。祝你好运。
关于java - 签名Android apk : INSTALL_PARSE_FAILED_NO_CERTIFICATES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835359/