签名(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. JAVA——选择,循环,顺序控制结构

    目录 一.顺序控制 二.选择控制 2.1分支控制 2.1.1单分支 2.1.2双分支 2.1.3分支控制if-else 2.1.4嵌套分支 2.2switch分支结构 细节讨论 练习 题目1 题目2 ...

  2. sql数据处理

    安装pymysql 读取数据库数据进行pandas操作,并用seaborn和matplotlib进行画图

  3. 为游戏编写boss剧情

    教程目录: 1. 小游戏展示 2. 下载游戏引擎 3. 创作一个移动的背景 4. 让阿菌煽动翅膀 5. 让阿菌模拟重力下坠 6. 让阿菌可以摸鱼 7. 编写游戏开始与结束 8. 编写 boss 剧情 ...

  4. linux文本处理grep

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  5. Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)

    前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...

  6. call、apply 和 bind

    call().apply().bind() 都是用来重定义 this 这个对象的! var obj1 = { username: "HuiTaiLang", fn: functio ...

  7. java面试:java基础、Io、容器

    1.java基础 1.JDK 和JRE有什么区别 ​ JDK:java开发工具包,java开发运行环境.包含了JRE. ​ JRE:java运行环境,包含java虚拟机,java基础类库. 2.jav ...

  8. C/C++语言读取SEGY文件笔记(一)

    SEGY IO 推荐采用的IDE为Visual studio(VS),本文档将介绍SEGY文件的读取与写入过程,即SEGY文件的复制. 因此,新建头文件ReadSeismic.h与C++文件ReadS ...

  9. Paypal标准支付对接

    提醒一下,题主是在快速标准支付做到一半的时候换成了标准支付,所以该文档的快速支付大家做个参考就可以了. 一.两种支付方式 标准支付 优点:纯前端对接,简单方便,适用于非技术开发人员.个人即可用,不用花 ...

  10. LFS系列镜像在阿里云镜像站首发上线

    LFS镜像 镜像详情页: https://developer.aliyun.com/mirror/lfs Linux From Scratch (LFS) 是一个项目,它为您提供完全从源代码构建您自己 ...