签名(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. JZ-069-在 O(1) 时间内删除链表节点

    在 O(1) 时间内删除链表节点 题目描述 在 O(1) 时间内删除链表节点. 方案:如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复 ...

  2. phpStudy windows服务器下安装,以及外网不能访问的问题

    废话不多说,超简单 1.下载phpstudy软件包http://phpstudy.php.cn/官网进行下载 2.安装,下一步式傻瓜安装 3.配置域名: 打开hosts文件,添加 然后然后访问域名就可 ...

  3. LGP2891题解

    题目大意 有 \(n\) 只奶牛,\(q\) 种食物和 \(p\) 种饮料,每只奶牛喜欢一些饮料和食物,但只能那一种,求最小配对数量. 首先来看一下这道题的简化版:没有饮料,该怎么做呢? 我会!裸的二 ...

  4. AOP源码解析之二-创建AOP代理前传,获取AOP信息

    AOP源码解析之二-创建AOP代理前传,获取AOP信息. 上篇文章对AOP的基本概念说清楚了,那么接下来的AOP还剩下两个大的步骤获取定义的AOP信息,生成代理对象扔到beanFactory中. 本篇 ...

  5. 构造器注入的方式给Cart属性赋值 关系1:1;1:n

    1.通过Spring创建对象,现有Users和Cart实体类,关系为1:1 属性注入的方式给Users属性赋值 2.Cart和Product实体类,关系1:n 构造器注入的方式给Cart属性赋值 Ca ...

  6. NaviCat连接提示驱动程序IM004错误

    今天一打开NaviCat提示驱动程序IM004错误,百度了好几种方法都不起作用,多次尝试后总结出一套方法: 一.到控制面板--卸载程序--卸载NaviCat Clien 注意可能有多个版本的,2008 ...

  7. Linux服务器上搭建Centos7.0+Apache+php+Mysql网站

    一.安装Linux系统 1.1虚拟机搭建Linux Centos7.0版本,搭建过程省略. 二. 安装apache.php.mysql.php-gd等组件. 2.1安装Apache服务程序(apach ...

  8. 学习SpringMVC必知必会(3)~springmvc的请求和响应

    一.处理器方法响应处理 ▷ Controller方法该怎么返回.Controller数据该怎么进行共享 返回void/ModelAndView/String 1.Controller方法返回void ...

  9. SINAMICS S120的核心控制单元CU320使用教程,电机模块接线

    SINAMICS是西门子公司新一代的驱动产品,它正在逐步取代现有的MASTERDRIVES及SIMODRIVE系列的驱动系统.SINAMICS S120是集V/f控制.矢量控制和伺服控制于一体的多轴驱 ...

  10. VSCode编写vue项目文件出现红色波浪线

    VSCode编写vue项目文件出现红色波浪线 在我们在写Vue或其他项目时,可能会遇到这样一个问题:明明自己的代码程序都没有错,代码规范也符合标准,为什么它就是给我报错显红呢??? 解决方案 第一种方 ...