2019-07-31android 应用签名 相关命令

为什么要签名?

android应用以它的包名(package name)作为它的唯一标识,如果在同一台手机上安装两个包名相同的apk,后面安装的apk就会覆盖掉前面安装的apk,为了避免这种事情发生,android要求对作为产品发布的apk,要进行签名,才可以发布。

(换句话说:同一个包名,签名不一样的两个apk,后面的apk在前面的apk卸载之前,是不可以安装的)

签名的作用:

1.确定发布者的身份。

2.确保apk的完整性。签名会对apk包中的每个文件进行处理,从而确保文件不被替换


如何签名?

1 使用 android studio 进行签名

2 使用命令对apk进行签名

(1)创建key store库命令行工具:keytool   (jdk 安装目录下的bin子目录下提供了keytool.exe工具来生成数字证书,不是android sdk中的工具)

keytool -genkeypair -alias pk -keyalg RSA -validity 400 -keystore productkey.jks
-genkeypair :    指定生成数字证书
-alias:  指定生成数字证书的别名
-keyalg:指定生成数字证书的算法 RSA
-validity:指定数字证书的有效期
-keystore:指定生成的数字证书的文件名(*.jks)也可以是全路径

输入上述命令,就会启动命令行,以交互的方式输入创建数字证书需要的信息

(2)拿到未签名的apk安装包,(从某处获取,比如,apktools反编译,或者自己生成),自己生成未签名的apk安装包方法如下:
如果android项目没有错误,在android studio中执行 菜单 Build->Make Project 即可生成没有签名的apk安装包,生成的未签名的安装包位置在 项目的app\build\outputs\apk 路径下,文件名为 app-release-unaligned.apk,这个文件就是未签名的apk安装包。

(3)使用jarsigner命令对未签名的apk进行签名(jarsigner也是jdk安装目录中的bin中的工具,不是android sdk中的工具)

jarsigner -verbose -keystore productKey.jks -signedjar smart.apk app-release-unaligned.apk pk

-verbose:指定生成详细说明
-keystore:指定使用的数字证书文件
-signedjar:该选项有3个参数,分别为 签名后的apk文件名称,需要签名的apk文件名称,数字证书别名

命令行执行后,以交互的方式进行apk签名

你可能感兴趣的:(2019-07-31android 应用签名 相关命令)