签名(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文件名]

3, Windows系统,Android Studio默认的签名目录

C:\Users\Administrator\.android\debug.keystore

查看签名命令 (密码android):

keytool -v -list -keystore debug.keystore

4, 查看apk的签名信息

jarsigner -verify -verbose -certs <your_apk_path.apk>

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

【Android开发】jarsigner重新打包apk的更多相关文章

  1. Android开发笔记:打包数据库

    对于数据比较多的控制一般会加入SQLite数据库进行数据存储,在打包时这些数据库是不自动打包到apk中的,如何创建数据库呢 方法1:将创建数据库的sql语句在SQLiteHelper继承类中实现,在第 ...

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

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

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

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

  4. (转)Android开发把项目打包成apk

    转:http://blog.csdn.net/luoyin22/article/details/7862742 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们 ...

  5. Android开发中内置apk程序

    首先申明,这里的方法介绍是针对我司自己项目中的具体开发板而做的. Mg701内置APK有三种方式 一.         这种方法必须要自己编写Android.mk文件(关于Android.mk可以参考 ...

  6. Android开发把项目打包成apk-(转)

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

  7. Android studio 自己定义打包APK名称

    Android Studio打包应用默认生成的apk名称是:app-release.apk .假设我们要让生成的apk名跟我们版本号包名有联系的话.那我们就要自己定义生成的apk名了,要怎么做呢. 我 ...

  8. Android开发 Failed to install *.apk on device 'emulator-5554': EOF

    在运行android 程序时出现这样的错误: Failed to install homework.apk on device 'emulator-5554': EOF java.io.IOExcep ...

  9. Android #Android开发环境搭建

    Android #Android开发环境搭建 1.下载:Google在国服的官网 https://developer.android.google.cn/index.html 1.点击首页 “ 获取 ...

随机推荐

  1. LeetCode-073-矩阵置零

    矩阵置零 题目描述:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解决方案是使用 O(mn) 的额外空间,但这并不 ...

  2. [csi]浅聊ceph-csi组件

    描述   ceph-csi扩展各种存储类型的卷的管理能力,实现第三方存储ceph的各种操作能力与k8s存储系统的结合.调用第三方存储ceph的接口或命令,从而提供ceph数据卷的创建/删除.挂载/解除 ...

  3. 扩展auth_user字段、BBS需求分析、创建BBS数据库、注册页面搭建与用户头像展示及Ajax提交数据

    昨日内容回顾 csrf跨站请求 1. SQL注入 2. xss攻击 3. csrf跨站请求 4. 密码加密(加盐) '''django中默认有一个中间件来验证csrf''' # 只针对post请求才验 ...

  4. Sqlserver 2008 导出数据库

    sqlserver2008中导出数据库: ①当数据库中的数据量比较大时,可使用备份的方法. 路径可以默认,想自定义就点击[添加],最后[确定]即可. ②当数据量不是很大时,可以采用导出SQL执行语句的 ...

  5. tensorflow源码解析之framework-shape_inference

    目录 什么是形状推断 InferenceContext 关系图 涉及的文件 迭代记录 1. 什么是形状推断 前面我们讲到op的时候,提到了操作的注册器OpRegistry,并且提到,其中注册的数据是一 ...

  6. CF1534F1题解

    首先,对于一个在第 \(i\) 行 \(j\) 列的沙子,如果他开始下降,他能够使哪些沙子下降呢? 很容易得知是第 \(j-1,j,j+1\) 列所有行号不小于 \(i\) 的沙子. 对于沙子 \(u ...

  7. Cobalt Strike的安装

    一.下载 压缩包下载回来之后,可以看到里面的文件有这些: 其中搭建团队服务器端的关键文件有两个,一个是cobaltstrike.jar,另一个是teamserver,这里我打算将团队服务器端搭在我的v ...

  8. 12.11 Exception

    12.11exception 1.类别 检查性异常:用户错误或者问题引起的异常,此类异常程序员无法预见.例如:打开一个不存在的文件,用户输入错误(在只能输数字的地方输入汉字)...... 运行时异常: ...

  9. [WPF] 假装可变字体

    1. 可变字体 上图中的两个动画,一个文字直接变粗,一个渐渐变粗,我觉得后者会更有趣.但普通的字体可达不到这种效果,例如微软雅黑,无论怎么调整它的 FontWeight,实际上它也只有三种粗细: 这时 ...

  10. display 不同的值及他们的作用

    display 不同的值及他们的作用 常见 block 块元素类型,默认宽度为父元素宽度,可设置宽高,并独占一行 none 元素不显示,并从文档流中移除 inline 行内元素类型,默认宽度为内容宽度 ...