签名
https://flutter.cn/docs/deployment/android#sign-the-app
https://developer.android.google.cn/studio/publish/app-signing?hl=zh-cn#app-signing-google-play
Java 密钥库(.jks 或 .keystore)是用作证书和私钥存储库的二进制文件。
公钥证书(.der 或 .pem 文件,也称为数字证书或身份证书)包含公钥/私钥对中的公钥,以及可以标识持有对应私钥的所有者的一些其他元数据(例如名称和位置)。
应用签名密钥:
用于为用户设备上安装的 APK 签名的密钥。作为 Android 安全更新模型的一部分,应用签名密钥在应用的整个生命周期内保持不变。应用签名密钥属于私钥,因此必须保密。不过,您可以与他人共享使用应用签名密钥生成的证书。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
输入密钥库口令: 12345678
再次输入新口令: 12345678
您的名字与姓氏是什么?
[Unknown]: cai
您的组织单位名称是什么?
[Unknown]: caicai
您的组织名称是什么?
[Unknown]: xcai
您所在的城市或区域名称是什么?
[Unknown]: ty
您所在的省/市/自治区名称是什么?
[Unknown]: ty
该单位的双字母国家/地区代码是什么?
[Unknown]: zh
CN=cai, OU=caicai, O=xcai, L=ty, ST=ty, C=zh是否正确?
[否]: y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 10,000 天):
CN=cai, OU=caicai, O=xcai, L=ty, ST=ty, C=zh
输入 <key> 的密钥口令
(如果和密钥库口令相同, 按回车):
[正在存储/Users/nocilantro/key.jks]
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /Users/nocilantro/key.jks -destkeystore /Users/nocilantro/key.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
keytool -importkeystore -srckeystore /Users/nocilantro/key.jks -destkeystore /Users/nocilantro/key.jks -deststoretype pkcs12
# 输入源密钥库口令:
# 已成功导入别名 key 的条目。
# 已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
# Warning:
# 已将 "/Users/nocilantro/key.jks" 迁移到 PKCS12。将 JKS 密钥库作为 "/Users/nocilantro/key.jks.old" 进行了备份。
|
创建一个名为 /android/key.properties 的文件,如下:
| storePassword=12345678
keyPassword=12345678
keyAlias=key
storeFile=/Users/nocilantro/key.jks
|
构建应用:
| flutter clean
flutter build apk --release
cp build/app/outputs/flutter-apk/app-release.apk ~/Desktop/test12270907.apk
|
包名和签名的问题
Android中包名是唯一的
1.包名、签名都相同:会直接覆盖。
2.包名相同,签名不同:安装失败。
3.包名的命名规范:com.公司名.项目名。例如:com.baidu.test。