前言:久违的第二篇博客:需求太多还有点乱,加上自己的一点惰性,致使时隔太久。好了直接上货,也是前些日子遇到的一点小问题。主要是jdk1.6_以下转到jdk1.7_以上遇到的一个时间戳问题
内容:在以前的工作中都是使用IDE直接打包签名的,现在是要将打包签名之后的apk处理之后再次签名,就不可以使用IDE签名,需要使用jdk中bin目录下的jarsiger.exe作为签名的工具,上图展示:
打开你的cmd命令行进入到java\jdk\bin目录下,执行以下命令(注意“-”之前的空格)此时就是这个我想说的关键问题:就是jdk1.6以下_和jdk1.7_以上区别:
jdk1.6_执行一下命令正常没有问题(自行替换)
jarsigner.exe -verbose 指定生成详细输出 -sigalg (算法名称一般是SHA1withRSA) -digestalg (摘要算法名称一般是SHA1或是SHA256) -keystore 秘钥的位置 -storepass 密码 -keypass 当初设置的密码 -signedjar 输出路径 输入路径 数字证书别名
jdk1.7_执行以上代码,会出现个警告,虽然当时安装可能没有什么问题,但是对于一个有一点强迫症患者的我还是有点不舒服
他说翻墙可以解决:然并卵。可能是我翻不过去
为了解决这个问题查访各方资料终于在 stackoverflow中找到了答案,附上链接供大家分享(我是连接)
需要在你的命令中添加“-tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp ”加完之后是这样的,迫不及待的想要试试。
完美!
总结:之所以出现需要时间戳的问题应该由于指定了算法,如果没有指定算法的命令也许就不需要时间戳了,这是我的猜测,最后自己试了一下,啪啪啪打脸,毛关系没有。主要原因就是官方在2017年4月18日停止了以前时间戳服务,为了不影响产业链换了一个新的地址替代,就是今天我们加入的那个命令
官方解释:附上链接(点我)