1. 什么是数字签名?
数字签名就是为你的程序打上一种标记,来作为你自己的标识,当别人看到签名的时候会知道它是与你相关的
2. 为什么要数字签名?
3. 数字证书的机制?
Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证书的概念和java的数字证书机制。
4. 程序使用相同的数字证书的好处
(1)有利于程序升级
当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。
(2)有利于程序的模块化设计和开发。
Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
(3)可以通过权限(permission)的方式在多个程序间共享数据和代码。
Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,则这个权限就只
能授予那些跟该权限所在的包拥有同一个数字证书的程序。
5.
(1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。
(2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。
(3)Android Market强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。
6. 数字证书的要点:
Android数字证书包含以下几个要点:
数字签名的两种模式
我们都知道Android系统不会安装运行任何一款未经数字签名的apk程序,无论是在模拟器上还是在实际的物理设备上。所以我们会有一个疑问,为何在日常开发过程中我没有进行任何签名的操作,程序都会在模拟器和真机上运行?下面我们来讲讲
APK程序的两种模式: 调试模式(debug mode)和发布模式(release mode)
debug密钥: 一个名为debug.keystore的文件
存放位置 :
C:\Users\Xiaopeng\.android\debug.keystore Xiaopeng对应替换为自己操作系统的用户名
两个风险:
所以一定要有自己的数字证书来签名;
2. 发布模式(release mode) :
当要发布程序时,开发者就需要使用自己的数字证书给apk包签名
使用自己的数字证书给APK签名的两种方法:
(1)通过DOS命令来对APK签名。
(2)使用ADT Export Wizard进行签名
mac 下keystore的生成:
1、去到JDK的bin目录
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin
2、输入命令
sudo keytool -genkey -alias androiddebugkey -keyalg RSA -validity 20000 -keystore lau_market.keystore
其中20000是keystore的有效期,尽量设置长一点,lau_market.keystore就是最终生成的keystore名。
3、填写步骤
注意这里keystore的密码设置为android
4、最终将会在bin下面生成lau_market.keystore文件。