安卓代码签名证书是用于验证 APK 文件完整性和开发者身份的数字证书,它通过加密技术确保应用未被改动,并标识应用的来源,所有安卓应用必须使用签名证书才能安装或发布到应用商店。
生成密钥库(Keystore)
使用 keytool
工具生成包含私钥和证书的密钥库文件(.jks
):
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -validity 20000 -keystore mykeystore.jks -storepass mypassword -dname "CN=MyApp, OU=Dev, O=MyCompany, L=City, S=State, C=US"
签名 APK
使用 jarsigner
工具对 APK 进行签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mykeystore.jks -storepass mypassword myapp.apk myalias
验证签名
通过 apksigner
或 jarsigner
验证 APK 签名:
apksigner verify --verbose myapp.apk
特性 | 调试签名(默认) | 发布签名(自定义) |
---|---|---|
用途 | 开发阶段测试 | 正式发布或上线 |
密钥位置 | ~/.android/debug.keystore |
自定义路径(需妥善备份) |
密码 | android (默认) |
自定义强密码 |
有效期 | 无限期(但建议定期更换) | 通常设置较长期限(如 25 年) |
安全性 | 低(公开且易被复用) | 高(需严格保护私钥) |
问题 | 解决方案 |
---|---|
密钥库密码遗忘 | 无法直接恢复,需重新生成密钥库并重新签名 APK(需更新应用版本号) |
证书过期或损坏 | 生成新证书并重新签名,但需通知用户更新应用(视为新版本) |
密钥库文件丢失 | 若未备份则无法恢复,需重新生成证书(导致应用被视为全新) |
Google Play 拒绝上传 | 确保使用发布签名证书,且密钥库密码强度符合要求(至少 8 字符含字母+数字) |
解答:
密钥库(.jks
文件)包含私钥,丢失后无法直接恢复,需重新生成新证书并重新签名 APK,但需注意:
解答:
可以,但需满足以下条件:
debug.keystore
)不可用于发布,需使用自定义生成的发布