码迷,mamicode.com
首页 > 其他好文 > 详细

安装APK:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

时间:2015-08-27 00:31:54      阅读:236      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!