一、生成签名密钥库(Keystore)
使用JDK自带的keytool工具生成 打开命令行工具(CMD或终端),输入以下命令生成密钥库文件(例如`my-release-key.keystore`):
```bash
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
```
参数说明:
- `-genkey`:生成密钥
- `-v`:启用详细输出
- `-keystore`:指定密钥库文件名
- `-alias`:密钥库别名
- `-keyalg RSA`:加密算法(推荐RSA)
- `-keysize 2048`:密钥长度
- `-validity 10000`:有效期(天)
注意事项
- 密钥库密码需妥善保管,后续签名时需使用相同密码
- 建议使用JDK自带的`android.keystore`(别名`androidtest`)进行开发调试签名
二、使用jarsigner工具签名APK
签名未签名的APK
在命令行中输入以下命令:
```bash
jarsigner -verbose -keystore my-release-key.keystore -signedjar signed.apk original.apk
```
参数说明:
- `-verbose`:输出签名详细信息
- `-keystore`:指定密钥库文件
- `-signedjar`:输出签名后的APK文件名(需添加`.signed`后缀)
- `-signedjar`:输入的未签名APK文件名
签名已签名的APK(更新签名信息)
若需更新已签名APK的签名信息(如变更版本号),需使用`-verbose -sigalg`参数:
```bash
jarsigner -verbose -keystore my-release-key.keystore -sigalg SHA1withRSA -digestalg SHA1 -signedjar signed.apk original.apk
```
三、优化APK文件(可选)
签名完成后,建议使用`zipalign`工具对APK进行压缩优化:
```bash
zipalign -v 4 signed.apk aligned.apk
```
参数说明:
`-v`:启用详细输出
`4`:表示每4096字节对齐一次(推荐值)
四、注意事项
签名证书类型
- 开发调试推荐使用`android.keystore`(系统默认)
- 发布版本需使用独立签名的`keystore`文件
- 证书需与发布平台(如Google Play)匹配
签名与权限
- 不同签名会获得不同权限,建议为发布版本使用独立签名
- 若需验证签名完整性,可使用`jarsigner -verify`命令
工具推荐
- 开发环境: Eclipse导出带签名APK(右键项目→Export→Android Application) - 命令行
- 第三方工具:ZipSigner(支持zip/jar签名,修改ROM包时使用)
通过以上步骤,即可完成APK的签名。发布时需确保使用与签名时相同的`keystore`和密码。