一、生成签名文件
1、通过Android Studio生成
(1)点击Build -> Generate Signed Bundle or APK;
(2)选择APK,并点击Next;
(3)点击Create New:
(4)填写相关信息,点击OK,即可完成创建:
(5)创建结果:
2、通过命令生成
控制台输入命令:keytool -v -genkey -keystore test.keystore -alias testkey -validity 20000。
-v: 显示详细输出
-genkey: 生成签名文件
-keystore test.keystore: 签名文件存储路径
-alias testkey: 别名
-validity 365:有效期限,单位天。
D:\MU>keytool -v -genkey -keystore test.keystore -alias testkey -validity 365
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: test
您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]: test
您所在的城市或区域名称是什么?
[Unknown]: test
您所在的省/市/自治区名称是什么?
[Unknown]: test
该单位的双字母国家/地区代码是什么?
[Unknown]: test
CN=test, OU=test, O=test, L=test, ST=test, C=test是否正确?
[否]: y
正在为以下对象生成 2,048 位DSA密钥对和自签名证书 (SHA256withDSA) (有效期为 365 天):
CN=test, OU=test, O=test, L=test, ST=test, C=test
输入 <testkey> 的密钥口令
(如果和密钥库口令相同, 按回车):
再次输入新口令:
[正在存储test.keystore]
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore test.keystore -destkeystore test.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
使用这种方式生成签名文件后,会有Warning警告,此时可以按照警告进行修改。
D:\MU>keytool -importkeystore -srckeystore test.keystore -destkeystore test.keystore -deststoretype pkcs12
输入源密钥库口令:
已成功导入别名 testkey 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
Warning:
已将 "test.keystore" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为"test.keystore.old"进行了备份。
二、签名文件信息查看
控制台输入命令:keytool -list -v -keystore test.jks,输入密码,即可进行查看。
D:\MU>keytool -list -v -keystore test.jks
输入密钥库口令:
密钥库类型: PKCS12
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: test
创建日期: 2022-6-20
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=test, OU=test, O=test, L=test, ST=test, C=tset
发布者: CN=test, OU=test, O=test, L=test, ST=test, C=tset
序列号: bf345f0
有效期为 Mon Jun 20 15:49:42 CST 2022 至 Fri Jun 14 15:49:42 CST 2047
证书指纹:
MD5: AD:E0:66:1B:5E:21:94:1B:E2:C4:02:E9:60:5A:6B:DD
SHA1: A9:1E:3E:C4:C7:1F:0B:D5:E2:5A:D8:62:D9:F4:B1:50:D2:FD:39:CF
SHA256: 85:A1:D8:CD:15:05:F2:78:31:BE:25:82:33:60:BF:62:C3:53:2B:F5:C1:
ED:83:B4:18:CB:28:CF:87:03:E0:1A
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 70 CA B3 AB 7F 58 62 45 BF 85 D6 F9 66 5F 5B C9 p....XbE....f_[.
0010: D5 4B A7 00 .K..
]
]
*******************************************
*******************************************
三、自动签名配置
android {
// 签名信息配置
signingConfigs {
debugConfig {
storeFile file('editmap.jks')
storePassword '123456'
keyAlias 'key0'
keyPassword '123456'
}
releaseConfig {
storeFile file('editmap.jks')
storePassword '123456'
keyAlias 'key0'
keyPassword '123456'
}
}
buildTypes {
debug {
// 配置debug包的签名信息
signingConfig signingConfigs.debugConfig
}
release {
// 配置release包的签名信息
signingConfig signingConfigs.releaseConfig
}
}
}