首页 > 其他 > 详细

安装APK:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

时间:2015-08-27 00:29:42      阅读:448      评论:0      收藏:0      [点我收藏+]

签名Apk后,安装出现如下错误:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

google、百度后发现,JDK8 签名时需要加上如下两个参数:

-digestalg SHA1 -sigalg MD5withRSA

完整签名命令如下:

jarsigner  -keystore myKey.keystore -storepass hapk_123  -signedjar MyTest.apk MyTest-unsigned.apk myKey.keystore -digestalg SHA1 -sigalg MD5withRSA -tsa http://timestamp.digicert.com

如果不设置tsa参数,会有如下警告:

警告: 
未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2070-05-29) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。
*******************


将Java环境变量切换到jdk6后,不设置digestalg、sigalg、tsa3个参数, 一切都OK,执行的命令如下:

jarsigner  -keystore myKey.keystore -storepass hapk_123  -signedjar MyTest.apk MyTest-unsigned.apk myKey.keystore


PS:有些帖子自提高,自jdk7就会有如上jdk8出现的问题,未亲测。


PS2,附录jarsigner各参数的解析。

$jarsigner -h
用法:jarsigner [选项] jar 文件别名(key的别名)
       jarsigner -verify [选项] jar 文件
[-keystore <url>]           密钥库位置

[-storepass <口令>]         用于密钥库完整性的口令
[-storetype <类型>]         密钥库类型
[-keypass <口令>]           专用密钥的口令(如果不同)
[-sigfile <文件>]           .SF/.DSA 文件的名称
[-signedjar <文件>]         已签名的 JAR 文件的名称
[-digestalg <算法>]    摘要算法的名称
[-sigalg <算法>]       签名算法的名称
[-verify]                   验证已签名的 JAR 文件
[-verbose]                  签名/验证时输出详细信息
[-certs]                    输出详细信息和验证时显示证书
[-tsa <url>]                时间戳机构的位置
[-tsacert <别名>]           时间戳机构的公共密钥证书
[-altsigner <类>]           替代的签名机制的类名
[-altsignerpath <路径列表>] 替代的签名机制的位置
[-internalsf]               在签名块内包含 .SF 文件
[-sectionsonly]             不计算整个清单的散列
[-protected]                密钥库已保护验证路径
[-providerName <名称>]      提供者名称
[-providerClass <类>        加密服务提供者的名称
  [-providerArg <参数>]] ... 主类文件和构造函数参数

版权声明:本文为博主原创文章,未经博主允许不得转载。

安装APK:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

原文:http://blog.csdn.net/m_changgong/article/details/48013843

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!