Android App在打包成安装包时需要用到签名文件,不同的编译器生成的签名文件格式也不同。Eclipse 的签名文件是以.ketstore为后缀的文件;Android Studio是以.jks为后缀的文件。目前大多数都是使用 Android Studio作为开发工具,接下来就以Android Studio为例介绍如何生成 JKS 签名文件。
1. 旧版本AS生成签名
1)在 Build 菜单中选择 Generate Signed Bundle / APK...;
2)选择 APK,点击 Next 下一步;
Android App Bundle:用于通过 Google Play 发布的应用,需要升级到AS 3.2 以上版本才支持App Bundle格式;
APK:用于创建可部署到设备上的签名APK;
3)点击 Create new... 创建密钥库;
4)点击 Key store path 创建密钥库文件地址;
5)选择密钥库文件路径,填写密钥库名称,点击 OK 确定;
6)填写完成创建密钥库相关信息,点击 OK 创建完成。
Key store path:密钥库文件的地址;
Password:密钥库密码; Confirm:确认密钥库密码;
Key:
Alias:密钥别称;
Password:密钥密码;Confirm:确认密钥密码;
Validity(years):密钥有效期;
Certificate:
First and Last Name:密钥颁发者姓名;
Organizational Unit:密钥颁发组织单位;
Organization:密钥颁发组织;
City or Locality:所在城市;
State or Province:所在州省;
Country Code:国家编码;
-
新版本AS生成签名
新版本AS在生成签名时有些小变化,创建过程还是和旧版本一样(1 ~ 6步骤),不同的是在创建完成后会弹出一个错误提示框:签名文件创建错误,JKS 密钥库使用专用格式。
根据错误提示,需要把 AS刚创建的JKS密钥库迁移到行业标准格式PKCS12。
- 解决办法:
1)在cmd窗口或者AS控制台界面,输入以下命令后按回车键:
keytool -importkeystore 旧签名文件路径+签名文件名.jks -destkeysore 新签名文件路径+新签名文件名.jks -deststoretype pkcs12
注意: 如果新的签名文件名和旧的签名文件名一样,而且在同一路径下,就会报错:
keytool 错误: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big.
新的签名文件路径或名称最好不要相同,如果文件路径相同,文件名称就不要相同;如果文件名称相同,文件路径就不要相同。
2)输入目标密钥库口令:
3)再次输入新口令:
4)输入源密钥库口令:
5)已成功导入别名 xx 的条目。
已完成导入命令: 1 个条目成功导入,0 个条目失败或取消
6)打开新生成签名文件的目录,即可看到新生成的JKS签名文件。