有几点问题需要提出来解答
1 为什么需要签名机制
答:个人觉得有三点 1. 防止别人串改自己的程序 2. 签名一致时才可升级 3. apk只有签名后才可以安装在Android系统上,系统要求
2 怎么签名
答:个人觉得有两种方法:1. 使用工具keytool和jarsigner 2. 使用AS或eclipse集成的方法
1 使用工具keytool 和jarsigner签名app
首先,生成.keystore文件,命令:
keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
利用.keystore文件对apk签名
jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk app-debug.apk demo.keystore
2. 使用IDE,仅对as情况
可以在Build/Generate signed apk选项签名操作(灵活性很大)
如果不这么做,as默认情况下是生成debug签名,怎么看是debug签名呢,对已生成的apk用如下命令
jarsigner -verify -certs -verbose *.apk
如果是下面的信息, CN=Android Debug等,这是debug签名,debug签名是普遍的签名,是不会允许提交到google play store上的
sm 315 Fri Dec 25 15:39:14 CST 2015 org/joda/time/tz/data/America/Fortaleza
X.509, CN=Android Debug, O=Android, C=US
[证书的有效期为15-9-29 上午11:40至45-9-21 上午11:40]
[CertPath 未验证: Path does not chain with any of the trust anchors]
除非是realease签名,如果要生成release版本的apk,需要对build.gradle进行配置
signingConfigs { config { keyAlias '' keyPassword '' storeFile file('') storePassword '' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.config } }
当然你可以对debug签名使用你自己定义的类型,只需要在buildTypes 里面添加
debug{
signingConfig signingConfigs.config
}