Android apk签名方法介绍
还望支持个人博客站:http://www.enjoytoday.cn
参考博客:http://www.enjoytoday.cn/posts/203
为什么要签名
在介绍签名方法之前,首先我们来了解下,android系统为何需要我们签名后才可安装运行apk,其实这个签名和我们生活中的信用卡签名并无本质不同,就是一个对apk身份的验证,对于apk的一种担责行为。apk前面采用加密算法(RSA或DSA)对apk加密验证以确保在apk安装运行之前的文件完整性和未被修改。
签名前的准备
签名其实说白了即使对文件进行加密,将整个文件给”锁起来”了。因此, apk前面前需要获取两个文件,一个是android已经编译成功 的apk文件,另一个即使apk的签名文件。当然,签名前你还是需要知道你的签名文件的签名基本参数的:别名和签名密码。所以在签名之前,我们需要做两个最基础的事情:一是编译生成apk文件,二是创建私有签名文件,apk文件编译胡不多赘述,主要来说如何生成一个签名文件。
签名文件的生成
签名文件的生成方式主要有两种,一种是工具式的可视化生成,一种是通过命令行方式生成。下面我主要介绍通过命令行方式生成一个前面文件*.jks.
命令行生成的前提是需要你已经成 功安装配置java运行时环境,生成签名证书使用的是java源码工具下的一个工具keytool,命令格式如下:
#keytool -genkey -alias keyname -keyalg RSA --validity 20000 -keystore keyname.jks -storepass storepass -keypass keypass
各个选项的含义如下所示:
-genkey : 生成.jks或.keystore文件
-alias :签名文件的别名,若需要导入eclipse对应用进行签名则需要设置为 androiddebugkey
-keyalg : 加密方式
-validity : 有效时间
-keystore : .jks或.keystore文件名
-storepass :store仓库密码,若需要导入eclipse对应用进行签名则需要设置为android
-keypass : .jks或.keystore文件的密码
命令运行后会显示一些需要你输入的信息,包括公司信息、个人地址、个人姓名等相关信息,显示如下:
最后确认后就会在当前目录生成一个keyname.jks前面文件,如此就完成了一个签名文件的创建过程 。
开始签名
命令行签名使用的是java自带工具jarsigner签名工具签名,签名使用使用的命令如下:
#jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keyname.jks -signedjar. test.tspk release.apk keyname
如此就可成功将test.apk签名成功,输出签名成功后的apk文件release.apk.
查看签名
签名后我们可以通过keytool工具对我们的apk进行查看签名信息,结果会输出你签名时填入的相关信息,以及一个生成的sha1和md5值,命令如下:
#keytool -printcert -jarfile release.apk
结果显示如下:
签名者 #1:
签名:
所有者: C=US, O=Android, CN=Android Debug
发布者: C=US, O=Android, CN=Android Debug
序列号: 1
有效期开始日期: Sun May 15 02:14:14 CST 2016, 截止日期: Tue May 08 02:14:14 CST 2046
证书指纹:
MD5: 7C:79:6B:BD:C5:CE:9C:A5:BB:3F:F2:20:39:6A:A7:B5
SHA1: 4A:00:08:BE:CC:A6:9A:CE:7D:82:F5:84:C1:31:C6:19:99:12:84:53
SHA256: A1:36:20:F4:E3:32:9C:32:F7:28:B1:8A:EB:15:42:37:1C:A5:10:47:47:A1:E2:12:AB:29:C5:62:35:05:C4:B3
签名算法名称: SHA1withRSA
版本: 1
Android apk签名方法介绍的更多相关文章
- Android APK 签名比对(转)
Android apk签名的过程 1. 生成MANIFEST.MF文件: 程序遍历update.apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个生成SHA1的数字签名信息,再用Ba ...
- Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名
Apk签名,每一个Android开发者都不陌生.它就是对我们的apk加了一个校验参数,防止apk被掉包.一开始做Android开发,就接触到了apk签名:后来在微信开放平台.高德地图等平台注册时,需要 ...
- Android APK 签名 (转发)
Cordova 3.5 为 Android APK 签名,生成可发布的 APK 程序文件 任侠 2014-06-07 00:04 移动开发 抢沙发 16,288 views 目录 [隐藏] ...
- Android apk签名的两种方法
编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 为了保证 ...
- [转]Android APK签名原理及方法
准备知识:数据摘要 这个知识点很好理解,百度百科即可,其实他也是一种算法,就是对一个数据源进行一个算法之后得到一个摘要,也叫作数据指纹,不同的数据源,数据指纹肯定不一样,就和人一样. 消息摘要算法(M ...
- Android : apk签名的多种方法以及key的配置
方法一:使用Android SDK中的签名工具给apk签名: (1)Android源码的 build/target/product/security/ 目录下有 media.pk8.media.x50 ...
- Android APK签名
一.为什么要签名? 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的. 由于开发商可能通过使用相同的Package Name来 ...
- Android APK安装过程介绍
课题路径:从Myfile中点击应用进行安装,到安装完成,过程分析 思想方法:在研究PreloadInstaller的时候我们直接从整个apk的文件结构入手,由整体到部分的分析:但现在整个PMS非常庞大 ...
- apk签名方法
生成签名文件: 1.右击项目管理器 选择 Export... 菜单: 2.在弹出的Export窗口中选择 Android->Export Android Application 后 next: ...
随机推荐
- docker redis实现主从复制
1.使用docker启动三个redis实例,容器名称分别为:myredis-master-6379,myredis-slave-6380,myredis-slave-6381.通过命令可以看到容器给三 ...
- HTML实例之搜索栏(附源码)
1. 简书类 实现效果 html代码 <div class="container"> <form action="" class=" ...
- JS(TS)中数组常见的方法(未完待续)
push():向数组末尾添加一个或多个元素 unshift(): 向数组的开头添加一个或多个元素 pop(): 删除数组最后一个元素 shift(): 删除数组第一个元素 sort(): 给数组排序 ...
- URL跳转绕过姿势
POC "@" http://www.target.com/redirecturl=http://whitelist.com@evil.com "\" http ...
- [转]JS将图片转为base64编码
本文转自:https://blog.csdn.net/DeMonliuhui/article/details/79731359 1.根据img标签获取base64编码/** * * @param im ...
- QT--HTTP图片下载器
QT--HTTP图片下载器 1.http使用前提 QT += core gui network //必须加上network 2.必须头文件 #include <QNetwork ...
- VirtualBox创建的Debian虚拟机与Windows宿主共享文件
术语: 1.VM:虚拟机 步骤: 1.在Windows10上下载并安装VirtualBox6.0.8(时间:2019/5/30),下载地址:https://download.virtualbox.or ...
- 流程控制之if,while,for
流程控制之if,while,for 一.if语法 就一个条件 age_of_girl = 18 if age_of_girl < 25: print("小姐姐") 两个条件 ...
- Shadow Map -- 点阴影(全方位)
昨晚终于把点阴影(深度CubeMap)程序调通了,思想不难,基本就是在上节定向光阴影基础上稍作修改,但是CG程序不太方便Debug,需要输出中间效果图进行判断,耽搁了一会儿. 过程如下: 1.将深度渲 ...
- flask框架--设置配置文件的几种方式 与Flask两种配置路由的方式
设置配置文件的几种方式 ==========方式一:============ app.config['SESSION_COOKIE_NAME'] = 'session_lvning' #这种方式要把所 ...