Android 签名打包

什么是签名span>

Android 要求所有已安装的应用程序都使用数字证书做数字签名,数字证书的私钥由开发者持有。

Android 系统不会安装或运行没有正确签名的应用,此规则适用于任何地方运行的Android系统。因此在真机或模拟器上运行或者调试应用前,必须为其设置好签名。

两种签名:

1、调试模式下签名   (sdk 为应用主动生成一个签名证书,调试模式下签名的应用不能对外发布,因为由构建工具创建的证书是不安全的,应用商店不接受调试证书签名的apk)

2、公布模式下签名 (需要生成自己的证书)

注:给自己开发的app签名,就代表着我们自己的版权,之后要进行升级,也必须要使用相同的签名才可以,签名代表着自己的身份(即 keystore,是一个包括私人秘钥集合的二进制文件),创建的keystore 多个app可以使用同一签名。

为什么要有签名strong>

开发Android的人众多,完全有可能把雷鸣、包名命名成相同的名字,需要签名来区分,由于开发商可能通过使用相同包名来混淆替换已经安装的程序,签名可以保证相同名字,但是签名不同的包不被替换。

签名机制在Android应用和框架中有着十分重要的作用,例如:Android系统禁止跟新安装签名不一致的apk,若应用需要使用system权限,必须保证apk签名与framwork签名一致。

为什么要这么做strong>

  •  应用程序升级 –  当发布应用的更新时,如果想染给用户无缝的升级到新版本,需要继续使用相同的某个或某套证书来签名更新包,当系统安装应用的更新时,它会比较现在的版本和新版本的证书,如果证书吻合,包括证书数据和顺序都吻合,那么系统允许更新,如果新版本所做的签名不是匹配的,那么将需要给用起一个不同的包名 – 在这种情况下,用户相当于安装了一个完全新的程序。
  • 用用程序模块化 – Android允许相同证书签名的应用程序运行在相同的进程中,此时系统会将它们作为耽搁应用程序对待,在这种方式中,可以按模块化的凡事部署应用,用户可以根据需要独立的跟新每一个模块。
  • 代码、数据的授权共享 – Android提供模式匹配的权限控制机制,因此一个应用可以暴露功能给另一个用指定证书签名的签名的应用,通过用相同证书签名多个应用,以及使用模式匹配的权限检查,应用程序可以以安全的方式共享代码和数据。


公钥和私钥的概念

在现代密码体制中加密和解密是采用不同的秘钥(公开秘钥),也就是公开秘钥算法(也叫非对称算法、双钥算法),每个通信方均需要两个秘钥,即公钥和私钥,这两个秘钥可以互为加解密,公钥是公开的,不要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密的。

证书的概念

数字证书是由证书认证机构(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.android


发布版的签名

1. 手动生成签名的 apk (使用 Android Studio 手动生成签名的 apk,每次发布不同版本的时候都需要手动生成一次,比较麻烦)

步骤如下:

    1> 在Android Studio菜单栏中,Build –> Generate Signed APK

    注:Key store path: 秘钥库存储位置

           Key store password:秘钥库安全密码

           Key alias:秘钥标识名称

           Key password: 秘钥安全密码

           秘钥安全密码应当与秘钥库安全密码不同

    3>创建新的秘钥库如下图

        

    5>选择签署的apk目的地,构建类型,产品风味,单击完成

    

    3>切换到Build Types 标签,将Signing config 选为“release”,即将刚刚生成的release签名信息配置进去

    

    

    5>然后执行菜单栏的“build –> clean Project”

7> 生成签名好的文件在如下位置:

Android 签名打包

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年5月3日
下一篇 2018年5月4日

相关推荐