Android给apk签名
签名是为了什么????
简单来说,签名可以保证我们的应用可以正常升级,并且不被别人覆盖. 算是一个标识.
工具
keytool 是个密钥和证书管理工具,可以用来生成证书.
jarsigner 工具利用密钥仓库中的信息来产生或校验 Java 存档 (JAR) 文件的数字签名
使用keytool生成证书:
keytool -genkey -keystore test.keystore -alias test -keyalg RSA -validity 10000
参数解释:
- -genkey 产生证书文件
- -keystore 指定密钥库的.keystore文件中
- -keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法)
- -validity 为证书有效天数,这里我们写的是10000天
- -alias 产生别名
然后再次执行签名:
jarsigner -verbose -keystore test.keystore -signedjar signed.apk t.apk
test
参数说明:
- -verbose:指定生成详细输出
- -keystore:指定数字证书存储路径
- -signedjar:该选项的三个参数为 签名后的apk包 未签名的apk包 数字证书别名(注意顺序)
后面有个警告,不过没有多大影响:
关于debug.keystore
补充点小知识:
1. AndroidStudio会自动生成一个默认的debug.keystore,它存放在~/.android/目录下.
2. 如果一不小心删了(其实我是rm了它),只要重新run一遍debug版应(不指定signingConfig),AS会再次自动创建
3. 它默认密码为 android
参考作者程序亦非猿