安卓APK应用签名生成
方式一:Android Studio生成
生成签名
将项目Sync with Gradle后,点击菜单
build-GenerateSSigned AppBundle or APK
然后选择生成APP的打包格式:APK或ABB
选择Create new....
新建KeyStore文件
填写签名存储文件的相关信息:
KeyStore:
- Key store path:选择KeyStore文件的存储路径,并命名xxx.jks
- Password:设置jks文件的密码
- confirm:再次确认密码
KEY:
- Alias:设置密钥名称
- Password:设置密钥的密码
- confirm:再次确认密码
- Validity(years):密钥有效时间(单位为年)
Certificate:
- First and Last Name:证书创建人姓名
- Qrganizational Unit:组织单位名称
- Organization:组织名称
- City or Locality:所在城市或区域名
- State or Province:所在州或者省份名
- Country Code(XX):双字母国家/地区代码
使用方式(为应用签名):
在
build-GenerateSSigned AppBundle or APK
中填写相关信息:Key store path:选择KeyStore的jks文件所在位置
Key store password:输入KeyStore文件的密码
Key alias:选择对应的密钥名称
Key password:填写密钥密码
方式二:利用keyTool手动生成签名文件
有时候在从他人的源码编译安装时,可能在代码中已经定义了签名文件存储位置,密钥等相关信息,但上传到代码托管平台时,不会把自己的密钥上传。因此在Sync with Gradle途中就会提示缺少密钥并报错。
由于此时未完成Sync with Gradle,在Build菜单下是不会出现GenerateSSigned AppBundle or APK
选项的,也就无法利用Android Studio来生成签名文件,此时就需要手动创建,并将其放置在代码中显示的存储位置。
手动生成jks文件:
首先cd 到Android Studio 的 jre 文件夹中的bin目录下(只有在此目录下才能调用keyTool)
在该目录下打开命令行,并按照如下提示输入命令:
1
2
3
4
5
6
7
8
9keytool -genkey -v -keystore demo.jks -alias demo -storepass 123456 -keypass 123456 -keyalg RSA -validity 14000
备注:
-keystore:设置生成的文件名称,包含后缀;
-alias:设置别名
-storepass:设置文件的密码
-keypass:设置key的密码
-keyalg:设置使用的加密算法,一般写RSA
-validity:设置有效期,尽可能长根据提示补充证书相关信息:
您的名字与姓氏是什么?
[Unknown]: wu
您的组织单位名称是什么?[Unknown]: xxx公司
您的组织名称是什么?
[Unknown]: xxx组织
您所在的城市或区域名称是什么?[Unknown]: 北京
您所在的省/市/自治区名称是什么?
[Unknown]: 京
该单位的双字母国家/地区代码是什么?
[Unknown]: 86
CN=wu, OU=xxx公司, O=xxx组织, L=北京, ST=京, C=86是否正确?
[否]: 是正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 14,000 天):
CN=wu, OU=xxx公司, O=xxx组织, L=北京, ST=京, C=86
[正在存储demo.jks]若提示需要迁移为行业标准格式 PKCS12,则继续输入
keytool -importkeystore -srckeystore demo.jks -destkeystore demo.jks -deststoretype pkcs12
完成迁移
创建sign.properties文件:
在工程根目录下创建
sign.properties
文件,并替换为自己的签名文件:1
2
3
4STORE_FILE=d:/xxx/debug.keystore
STORE_PASSWORD=android
KEY_ALIAS=AndroidDebugKey
KEY_PASSWORD=android在App module中的builg.gradle中,修改配置文件中的签名信息:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'kotlin-android-extensions'
}
android {
namespace 'com.lyihub.privacy_radar'
compileSdk 33
signingConfigs {
release {
def Properties buildProps = getSign()
storeFile file(buildProps['STORE_FILE'])
keyAlias buildProps['KEY_ALIAS']
keyPassword buildProps['KEY_PASSWORD']
storePassword buildProps['STORE_PASSWORD']
}
}
defaultConfig {
applicationId "com.lyihub.privacy_radar"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.release
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
/**
* 读取配置签名
* @return
*/
def getSign() {
def Properties buildProperties = new Properties()
buildProperties.load(new FileInputStream(file('../sign.properties')))
return buildProperties
}
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.github.Victor2018:ScreenMatchLib:v1.5'
implementation 'com.github.Victor2018:easypermissions:v1.1.0'
// implementation 'com.journeyapps:zxing-android-embedded:4.2.0'
implementation 'com.github.Victor2018:ZxingLib:v2.0'
implementation 'io.github.lucksiege:pictureselector:v3.11.2'
//glide
implementation 'com.github.bumptech.glide:glide:4.11.0'
kapt 'com.github.bumptech.glide:compiler:4.11.0'
}上述只是一个样例,实际操作请比对自己的配置文件,看清路径和对应的名称
最后编译安装即可。
- 标题: 安卓APK应用签名生成
- 作者: 耀鳞光翼
- 创建于 : 2024-12-29 14:56:00
- 更新于 : 2025-01-01 22:44:30
- 链接: https://blog.lightwing.top/2024/12/29/AndroidSign/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。