Android(安卓)apk数字签名总结
一、数字签名含义
数字签名就是Android使用Java数字证书的相关机制来给apk打上一种标记,用来标识不同的应用开发者。
就好比是一个人写文章,签名就相当于作者的署名。
二、为何使用数字签名
①最简单直接的回答:系统要求的
Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中。
②不同程序员开发的应用包名可能会相同,导致一个应用恶意覆盖另一个应用
比如微信上线以后,我们可以通过一些简单的方式就能查看到它的包名,这个时候你也开发了一款app,应用的图标、名称与包名与微信一致,那么用户在不知情的情况下载你的应用,因为包名的原因会覆盖之前的微信,如果这时你在你的应用中写入了病毒,那么就会对用户就会产生很大的影响,这也是为什么需要签名的原因。
③app版本升级
当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,不允许升级安装,会要求新程序更改包名。
④可以通过权限(permission)的方式在多个程序间共享数据和代码
Android 提供了基于数字证书的权限赋予机制,应用程序可以共享功能或者数据给那些与自己拥有相同数字证书的程序。比如百度/腾讯全家桶等。
三、数字证书的要点
Android数字证书包含以下几个要点:
1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序。
2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。
3)如果要正式发布一个Android ,必须使用一个自定义的合适私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
5)Android使用标准的java工具 Keytool and Jarsigner 来生成数字证书,并给应用程序包签名。
6)使用zipalign优化程序。
四、数字签名的两种模式
我们都知道Android系统不会安装运行任何一款未经数字签名的apk程序,无论是在模拟器上还是在实际的物理设备上。所以我们会有一个疑问,为何在日常开发过程中我没有进行任何签名的操作,程序都会在模拟器和真机上运行?
1、调试模式(debug mode) :默认模式, Android Studio会自动使用机器生成的debug密钥为应用程序签名,因此我们可以直接运行程序。
默认生成的apk在:app/build/outputs/apk目录下
2、发布模式(release mode) : 当要发布程序时,开发者就需要使用自己的数字证书给apk包签名。
使用自己的数字证书给APK签名的两种方法:
1) 使用Android Studio菜单栏build中的Generate Signed Apk引导进行签名。
2)通过DOS命令来对APK签名。
五、Android Studio生成发布版签名apk步骤
Androdi Studio数字签名打包apk图文步骤
六、备份签名与apk
签名文件很重要,不少同行都弄丢过,导致发布到应用市场的项目无法升级。注意备份好!!!
不同版本的apk也要记得备份,将来某个版本出问题也好还原。
参考文档:
Android之打包签名详谈Android
Android程序签名打包图文步骤
更多相关文章
- Android(安卓)应用程序签名
- APP签名打包时遇到的问题
- android apk签名(为什么 如何做 验证) -- 转
- 如何发布android应用程序
- debug.keystore过期问题
- android apk签名(为什么 如何做 验证)
- Android(安卓)使用Android(安卓)Studio + Gradle 或 命令行 进行
- Android(安卓)JNI 获取应用程序签名
- 一行命令得到签名SHA1(Android(安卓)Studio)