Android签名打包
什么是签名?
Android 要求所有已安装的应⽤程序都使⽤数字证书做数字签名,数字证书的私钥由开发者持有。
Android 使⽤证书作为标识应⽤程序作者的⼀种⽅式,证书不需要由证书认证中⼼签名,使⽤⾃制签名证书。
Android 系统不会安装或运⾏没有正确签名的应⽤,此规则适⽤于任何地⽅运⾏的Android系统。因此在真机或模拟器上运⾏或者调试应⽤前,必须为其设置好签名。
两种签名:
1、调试模式下签名 (sdk 为应⽤主动⽣成⼀个签名证书,调试模式下签名的应⽤不能对外发布,因为由构建⼯具创建的证书是不安全的,应⽤商店不接受调试证书签名的apk)
2、公布模式下签名 (需要⽣成⾃⼰的证书)
注:给⾃⼰开发的app签名,就代表着我们⾃⼰的版权,之后要进⾏升级,也必须要使⽤相同的签名才
可以,签名代表着⾃⼰的⾝份(即keystore,是⼀个包括私⼈秘钥集合的⼆进制⽂件),创建的keystore 多个app可以使⽤同⼀签名。
为什么要有签名?
开发Android的⼈众多,完全有可能把雷鸣、包名命名成相同的名字,需要签名来区分,由于开发商可能通过使⽤相同包名来混淆替换已经安装的程序,签名可以保证相同名字,但是签名不同的包不被替换。
签名机制在Android应⽤和框架中有着⼗分重要的作⽤,例如:Android系统禁⽌跟新安装签名不⼀致的apk,若应⽤需要使⽤system权限,必须保证apk签名与framwork签名⼀致。
为什么要这么做?
公钥和私钥的概念
在现代密码体制中加密和解密是采⽤不同的秘钥(公开秘钥),也就是公开秘钥算法(也叫⾮对称算法、双钥算法),每个通信⽅均需要两个秘钥,即公钥和私钥,这两个秘钥可以互为加解密,公钥是公开的,不要保密,⽽私钥是由个⼈⾃⼰持有,并且必须妥善保管和注意保密的。
证书的概念
数字证书是由证书认证机构(CA)对证书申请者真实⾝份验证之后,⽤CA的根证书对申请⼈的⼀些基本信息以及申请⼈的公钥进⾏签名(相当于加盖发证书机构的公章)后形成的数字⽂件。CA完成签发证书后,会将证书发布在CA的证书库(⽬录服务器)中,任何⼈都可以查询和下载,因此数字证书和公钥⼀样是公开的,实际上数字证书就是经过CA认证的公钥。
原则:
⼀个公钥对应⼀个私钥
秘钥对中,让⼤家都知道的是公钥,不告诉⼤家只有⾃⼰知道的是私钥
如果⽤其中⼀个秘钥可以解密,那么该数据必须是对应的秘钥进⾏的加密
⾮对称秘钥密码的主要应⽤就是公钥加密和公钥认证,⽽公钥加密的过程和公钥认证的过程是不⼀样的
例:两个⽤户 A 和 B ,A要把⼀段明⽂通过双钥加密的技术发送给 B , B有⼀对公钥和私钥,那么加密解密过程如下
1. B 将他的公钥传送给A
2. A ⽤ B 的公钥加密的他的消息,然后传送给 B
3. B ⽤他的私钥解密 A 的消息
调试版相关问题
证书到期问题:⽤来签署apk调试的⾃签名证书有效期365天,到期后只需删除该debug.keystore⽂件。
⽂件存储位置 --- OS 和 Linux 系统:~/.android /
--- windows 7, 8, 10 : C:\Users\<user>\.android\
发布版的签名
1. ⼿动⽣成签名的 apk (使⽤ Android Studio ⼿动⽣成签名的 apk,每次发布不同版本的时候都需要⼿
动⽣成⼀次,⽐较⿇烦)步骤如下:
1> 在Android Studio菜单栏中,Build --> Generate Signed APK
2>如果你已经有⼀个秘钥库,请转到步骤4,如果你想创建⼀个新的秘钥库,单击新建
注:Key store path: 秘钥库存储位置
Key store password:秘钥库安全密码
Key alias:秘钥标识名称
Key password: 秘钥安全密码
秘钥安全密码应当与秘钥库安全密码不同
3>创建新的秘钥库如下图
注:秘钥的有效时间设置以年为单位,应⾄少为25年,以便您可以在应⽤的整个⽣命周期内使⽤相同的秘钥签署应⽤更新 Certificate 部分是为证书输⼊关于您⾃⼰的信息,此信息不会显⽰在应⽤中,但会作为apk的⼀部分包含在您的证书中 Firstand Last Name 秘钥颁发者姓名
OrganizationalUnit 秘钥颁发者组织单位
Organization 组织
Cityor Locality 城市
State or Province 市或洲
CountryCode(XX)国家代码
4>在⽣成签名apk窗⼝中,选择秘钥库、秘钥,并输⼊两个密码(如果是新创秘钥,这些字段会⾃动填充)然后单击xiayi
android获取真正的签名5>选择签署的apk⽬的地,构建类型,产品风味,单击完成
APK Destination Folder 为签署的APK选择⼀个⽬的地
Build Type 选择构建的类型(两种类型调试和正式)
Flavors 选择产品风味(即我们平时所说的发布平台,Android将为选择的每个产品风味⽣成单独的apk) Signature Versions 签名版本勾选 Android7.0中引⼊了APKSignature Scheme v2
说明:v1:应⽤是通过zip条⽬进⾏验证,这样apk签署后可进⾏许多修改 - 可以移动甚⾄重新压缩⽂件 v2:验证压缩⽂件的所有字节,⽽不是单个zip条⽬,签名后⽆法再更改
2. 配置 adle ⽂件⾃动签名apk
步骤如下:
1>Android Studio 菜单栏 File --> Project Structure ( 快捷键 ctrl+alt +shift +s)
2>选中app这个module,然后切换到singning标签栏,然后点击添加,⽣成release签名信息,点击ok
3>切换到Build Types 标签,将Signing config 选为“release”,即将刚刚⽣成的release签名信息配置进去
4>随后我们可以看到app这个module的adle⽂件多出了如下部分代码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论