apk签名之用 jarsigner签名

Android sdk中有个工具jarsigner,可以对apk进行签名,看名字感觉应该可以对jar也进行签名。

在360那里上传apk的时候,同事跟我说因为360要加固的关系,所以本来已签名的apk最终得到一个加固后未签名的apk,然后需要我们自己重签名apk,当然可以直接下载360加固保,可以直接重签名,密钥这么重要的东西,怎么可以随便用别人的软件进行签名呢,所以直接否认这个方案,然后才在网上了解到原来sdk里面有这个东西,也是,怎么可能没有呢。

-verbose:签名命令标识符。
-keystore:后面跟着的是你签名使用的密钥文件(keystore)的绝对路径。
-storepass:后面跟着的是你密钥文件(keystore)的密码
-signedjar:此后有三个参数:
参数一:签名后生成的apk文件所要存放的路径。
参数二:未签名的apk文件的存放路径。
参数三:你的证书名称,通俗点说就是你keystore文件的别名,就是在你eclipse进行签名打包时的Alias的值。

示例:

jarsigner -verbose  -keystore mystore.jks -storepass passwork -digestalg SHA1 -sigalg MD5withRSA -signedjar release.apk debug.apk alias

-digestalg SHA1 -sigalg MD5withRSA 这句听说能解决一下警告,但本人测试并无效果,此警告可直接忽略,测试后得出结论,没什么影响

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

还有一个解决方案就是加入-tsa https://timestamp.geotrust.com/tsa 这一句,但是执行后却发现

jarsigner: 无法对 jar 进行签名: 时间戳颁发机构没有响应。如果要从防火墙后面连接, 则可能需要指定 HTTP 或 HTTPS 代理。请为 jarsigner 提供以下选项: 
  -J-Dhttp.proxyHost=<hostname>
  -J-Dhttp.proxyPort=<portnumber>-J-Dhttps.proxyHost=<hostname> 
  -J-Dhttps.proxyPort=<portnumber> 

QQ:361561789
可事可以直接加Q联系

猜你喜欢

转载自blog.csdn.net/chen_xi_hao/article/details/73801631