主要讲的是应用程序数字签名
接下来,系统会提示你输入apk文件的保存地址。这样我们就编译生成了发布版的未签名的apk文件. eg.sdialer.apk
2 完成了发布版的编译,接下来是获取私钥,会用到JDK下的两种工具:keytool和jarsigner. keytool是生成私钥的工具。
keytool命令的解释:
-genkey 产生一个密钥对(公钥和私钥)
-v 开启详细输出
-keystore<keystore-name>.keystore 包含私钥的keystore名称
-storepass<password> keystore的密码。安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,
keytool就会提示你输入密码,这样你的密码就不会保存在shell历史中。
-alias<alias_name> 密钥的别名
-keyalg<alg> 产生密钥的加密算法,可以采用DSA和RSA中的一种
-dname 用于描述密钥的产生者。这个值将作为自签名证书中的发布者。如果你此时没有输入,那么在执行签名时,
jarsigner会提示你输入 dname(distinguished name)
-validity 密钥的有效期,这里以天来计算。我们通常建议大于10000天
-keypass<password> 密钥的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,
keytool就会提示你输入密码,这样你的密码就不会保存在shell历史中。
jarsigner命令解释:
-keystore 包含私钥的keystore
<keystore-name>.keystore
-verbose 开启详细输出
-storepass<password> keystore的密码,安全起见,通常建议不要在命令行输入这个选项,
如果你不提供这个选项,jarsigner就会提示你输入密码,这样你的密码就不会保存在shell历史中。
-keypass<password> 密钥的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,
jarsigner就会提示你输入密码,这样你的密码就不会保存在shell历史中。
eg.
keytool -genkey -v -keystore s-dialer.keystore -alias sdialer_name -keyalg RSA -validity 10000
输出一个s-dialer.keystore,密钥别名为sdialer_name。有了密钥,我们就可以用它来进行签名。
签名工具是jarsigner.
eg. jarsigner -verbose -keystore s-dialer.keystore sdialer.apk sdialer_name
这样,就为应用程序sdialer.apk完成了签名
应用程序的版本
Android应用程序主要通过androidmanifest.xml中的android:versionCode和android:versionName来实现版本管理的