Android项目以它的包名作为唯一标识。如果在同一台手机上安装两个包名相同的应用,后面安装的应用就可以覆盖前面安装的应用。所以需要对产品发布的应用进行签名。 签名的主要有如下两个作用: 1.确定发布者的身份; 2.确保应用的完整性,签名会对应用包中的每个文件进行处理,从而确保程序包中的文件不会被替换。
一.使用Android Studio对Android应用签名 1.单击Android Studio主菜单中的Build----->Generate Signed APK 2.如果系统中没有数字证书,单击Create new按钮 3.填写完成之后,使用刚刚创建的数字证书,并确定是对debug还是release进行签名。
二.使用命令对APK包签名 如果不想借助Android Studio或者在某些场合下,需要对一个未签名的APK包进行签名,可以通过命令的形式进行手动签名。 1.创建Key store库 JDK安装目录下的bin目录下提供了keytool.exe工具来生成数字证书。
keytool -genkeypair -alias danny -keyalg RSA -validity 400 -keystore danny.jks
命令解释如下:
-genkeypair:指定生成数字证书;
-alias:指定生成数字证书的别名;
-keyalg:指定生成数字证书的算法;
-validity:指定生成的数字证书的有效期;
-keystore:指定所生成的数字证书的存储路径。
还需要以交互的方式输入密码,作者,公司等详细信息。 2.通过Android studio的Build------>Make Project即可生成未签名的APK安装包,具体路径在app/build/outputs/apk。 3.利用JDK安装目录下的bin子目录下提供了jarsigner.exe工具进行签名
jarsigner -verbose -keystore danny.jks -signedjar app-debug-signed.apk app-debug.apk danny
--verbose:指定生成详细输出
--keystore:指定数字证书的存储路径
--signedjar:该选项的3个参数分别为签名后的APK包,未签名的APK包,数字证书的别名。
4.成功签名: 验证apk是否签名。
jarsigner -verify xxx.apk
|