android studio如何直接给apk包签名

赞赏 2016-10-27

有一次应用认领,需要对一个空包进行签名,可在android studio中并没有找到直接apk签名的功能,怎么办那?
其实一条命令就可以。


android studio签名相关的功能其实都是调用jdk提供的工具实现的,而这些工具我们通过命令行也能够调用(mac和win一样)


直接对apk进行签名

使用工具 jarsigner 

该工具位于jdk_xxx\bin目录下 ,命令如下: 

jarsigner -verbose -keystore your_keystore_file -signedjar test_signed.apk test.apk your_keystore_alias 

注: test_signed.apk是签名之后的文件,test.apk是需要签名的文件


另外需要注意的是,如果你的jdk版本在1.7以上,你在对apk签名时,需要加上这个参数: 

-digestalg SHA1 -sigalg MD5withRSA 

否则同样会出现:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]的错误。


可能会有如下警告: 

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

这个警告也不影响签名,只是看着不顺心,命令后加上:   

-tsa https://timestamp.geotrust.com/tsa  

即可


所以执行的全部命令是: 

jarsigner -verbose -keystore ./Downloads/安卓应用/Keystore/daxueyzd -signedjar ./Downloads/Baidu_Claim.apk ./Downloads/Baidu_Claim_unsigned.apk daxue_alias  -digestalg SHA1 -sigalg MD5withRSA  -tsa https://timestamp.geotrust.com/tsa



查看keystore

从eclipse转到android studio,签名的时候让输入alias(别名),可能有人忘记了,我们可以从keystore文件中找到: 

用到的工具是keytool ,该工具位于 jre/bin目录下: 

命令如下: 

keytool -list -v -keystore your_keystore_file 

另外生成keystore的命令也是keytool


查看apk签名

既然应用认领要核对签名,那么就得能查看签名,可校验应用是否被篡改过。 

命令如下:

 jarsigner -verify -verbose -certs your_apk_file

登陆后阅读全文
阅读 2570 赞赏 0 有用 5 没用 0 收藏 0 分享

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

相关文章

Android Studio 混淆 so库文件问题?

Android 8.0 Oreo 来啦!

Android jenkins自动化打包Eclipse APK

现代 Android 开发资源汇总

Android 智能下拉刷新框架 - SmartRefreshLayout

推荐 | 腾讯开源的专注提升H5首屏加载速度的VasSonic框架

推荐一个Android Studio插件(显示Android资源引用次数)

推荐 | BlockCanary帮你找到Android应用卡顿的原因

翻译 | Android studio实用小提示 (1-5)

翻译 | Android studio实用小提示 (6-10)

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

JAVA NIO 一步步构建I/O多路复用的请求模型

JAVA 中原生的 socket 通信机制

6款程序员必备的开源中文汉字拼音转换及处理工具 (PHP Java .net)

java如何获取网页标题title? (用htmlparser)

Tomcat9配置HTTP2的流程

快速上手 Kotlin 的 11 招

为什么我要改用Kotlin

比特币装逼指南

printf %8s %4s %-12s 这个数字是啥?

mysql: ERROR 1292 (22007): Truncated incorrect DOUBLE value:

手机扫一扫
分享文章