签名(sign):在应用程序的特定字段写入特定的标记信息,表示该软件已经通过了签署者的审核。

过程:使用私有密钥数字地签署一个给定的应用程序。

作用
识别应用程序作者;
检測应用程序是否发生改变;
有种程序升级。当新程序与旧程序签名不一致时,会发生冲突觉得不是同一APP,,要求新程序改包名。

签名步骤:

1. 安装并配置jdk;

2. 进入jdk目录

cd C:\Program Files\Java\jdk1.8.0\bin

3. 生成android.keystore

keytool -genkey -v -keystore android.keystore -alias android.keystore -keyalg RSA -validity 20000

注意:

  • -keystore 后边紧跟 "android.keystore" 的是要生成的签名文件;
  • -alias 后边紧跟 "android.keystore" 的是签名文件的别名;


此时在jdk的bin目录,已经生成了一个证书: android.keystore

4. 进行签名

jarsigner -verbose -keystore android.keystore -signedjar [签名后的apk路径+文件] [未签名的apk路径+文件] android.keystore

注意:

  • -keystore 后边紧跟 "android.keystore" 的是上一步生成的签名文件;
  • 最后一个词 "android.keystore" 是上一步指定的签名文件的别名;
  • 如果不是 “.keystore” 类型的签名文件,而是 “.jks” 类型的,也可以拿过来直接替换使用。

此时会出现一行警告:

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

jarsigner 签名命令里加入如下参数来解决:

-digestalg SHA1 -sigalg MD5withRSA

可以忽略,安装后测试是否可行!

5.验证签名

jarsigner -verify XiaomiVerifysignd.apk

6. 优化apk
不过需要把build-tools下的zipalin包放到tools下

zipalign -v 4 XiaomiVerifysignd.apk XiaomiVerifysignd_new.apk

附加:

1. 根据 “.jks" 文件或者 ".keystore" 文件获取签名信息

keytool -list -v -keystore [keystore文件名 或者 jks文件名]

从中可以看到各种信息,其中就包含上边提到的别名,所以如果忘记或者不知道别名,可以再次获取到。

2, 查看apk的签名信息

jarsigner -verify -verbose -certs [keystore文件名 或者 jks文件名]

备注: 其他参数可以参考:http://www.cnblogs.com/gccbuaa/p/7092556.html

转载于:https://www.cnblogs.com/neo-java/p/10185011.html

【Android开发】jarsigner重新打包apk相关推荐

  1. win8下cocos2dx3.2移植android平台及代码打包APK

      cocos2dx程序不能只在VS2012下运行,迟早是要搬运到Android和IOS上的.Windows下移植IOS平台先搁下不说比较困难,而且只有越狱的苹果机才可以运行,而且毕竟IOS高端.小众 ...

  2. Android开发Android studio之gradle打包apk重命名的方法

    老套路,先看效果图: 首先第一步在gradle里面(跟android同级)写个获取当前时间的方法如下: //获取时间的方法 GMT+8代表北京时间,下面两个方法都可以 static def getNo ...

  3. Android Studio 2.3 打包apk

    LZ-Says:写代码写得突然蒙比了,来来回回折腾了小2个月,乱啊~ 前言 话说从Eclipse转化到Android Studio后,一直都没打个包,发个版本,今天想提交测试打个版本,丫的一看,和Ec ...

  4. Android直接用手机打包apk!

    你没有看错,用手机浏览器访问Jenkins,就可以打包apk,并生成下载二维码,发送邮件通知测试人员下载,从此解放双手,告别打包测试.先上本人手机邮箱收到的打包成功通知效果图: 废话少说,开干! 本人 ...

  5. Android开发把项目打包成apk

    做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为" ...

  6. android开发 Gradle多渠道打包以及集成360加固

    先上图 先说实现的目的 主要是 用脚本做渠道打包 然后在APP里面添加数据 在启动时读取数据上传服务器做统计 然后为啥要这么做:第一个是因为APP里面在做渠道包的时候 需要加特定的东西,区别这些APP ...

  7. Android 超级简单的打包apk

    为什么要打包: apk文件就是一个包,打包就是要生成apk文件,有了apk别人才能安装使用.打包分debug版和release包,通常所说的打包指生成release版的apk,release版的apk ...

  8. Qt 配置Android开发环境,及.apk软件发布方法

    Qt版本:5.14.1 1 准备安装资源 JDK SDK NDK 下载链接: 链接:https://pan.baidu.com/s/17AgHX0uW4ase2AKemP__VA  提取码:ojnd ...

  9. unity android解析包失败,打包APK失败。求解释

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Error building Player: CommandInvokationFailure: Failed to re-package resourc ...

最新文章

  1. 计算机rsnge指令,计算机二级office Excel 函数复习重点
  2. 2020应届生「求职图鉴」,扎心了!
  3. 大多数Web浏览器中都可以使用PUT,DELETE,HEAD等方法吗?
  4. 定位技术GPS/A-GPS/LBS/WIFI定位介绍
  5. 深入浅出理解有限状态机
  6. UE4 使用VaRest的最佳实践
  7. 单例(Singleton)设计模式应用场景
  8. 误区30日谈21-24
  9. hal库开启中断关中断_STM32 HAL库学习系列第9篇---NVIC按键外部中断函数
  10. 高中信息技术——Photoshop刷题点整理
  11. 解析接口中的JSON数据
  12. 北大计算机与微电子学校,中国计算机大会CNCC2019在苏州隆重举行
  13. 转:getaddrinfo函数详解
  14. 物联网案例_讨论物联网采用的商业案例
  15. 这猪蹄是人类能吃完的?
  16. Chrome Extension 介绍
  17. 元分析 | 大脑同伦共激活的性别差异
  18. device mapper与device-mapper-persistent-data 和 lvm2
  19. jasper翻译_Jasper为什么成为了Max的小翻译 孩子要从小学习双语吗
  20. php 虚拟机速度慢,[译]PHP虚拟机(PHP Virtual Machine)

热门文章

  1. mvc ajax 页面不刷新页面,如何在不刷新页面MVC C#的情况下显示不同的值
  2. mysql 窗口函数_7、MySQL高级功能(窗口函数)
  3. hdu 6351 Beautiful Now
  4. dns提供商主机名_DNS域名解析的过程
  5. 深入理解Python对象(源码深度解析)
  6. 基于范围的for循环
  7. bzoj 4498: 魔法的碰撞(DP+组合数)
  8. HDU 6156 2016ICPC网络赛 G: Palindrome Function(数位DP)
  9. python 批量修改文件名
  10. mqtt安装使用教程。(基于rabbitmq插件,docker部署,k8s部署,python教程)