在命令行中进行apk打包主要分为三个步骤:
1、配置签名(在/app/build.gradle文件中进行配置)
1)在/app/build.gradle文件中添加signingConfigs属性,具体内容如下:
signingConfigs {
#debug版本
debug {
storeFile file(pStoreFile) #key的文件位置
storePassword pStorePassword #密码
keyAlias pKeyAlias #别名
keyPassword pKeyPassword #别名密码
#只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
#只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证
#同时勾选V1和V2则所有机型都没问题
v1SigningEnabled true #设置包含v1签名方式
v2SigningEnabled true #设置包含v2签名方式
}
#release版本
release {
storeFile file(pStoreFile)
storePassword pStorePassword
keyAlias pKeyAlias
keyPassword pKeyPassword
v1SigningEnabled true
v2SigningEnabled true
}
}
2)在/app/build.gradle文件中修改buildTypes属性,修改后内如如下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release #指定使用signingConfigs中的签名配置
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
3)在gradle.properties文件中设置第1)步中的属性值
3)在gradle.properties文件中设置第1)步中的属性值:
#签名信息
pStoreFile = D:/soft/app/buildDemo.jks #jks文件的路径
pStorePassword = 123456 #生成jks文件时的密码
pKeyAlias = buildDemo #别名
pKeyPassword = 123456 #别名密码
2、使用命令行的方式生成jks签名文件
1)在命令行中执行如下命令
keytool -genkeypair -alias buildDemo -keyalg RSA -validity 3650 -keystore buildDemo.jks
备注:
# keytool -genkeypair ( 生成key命令)
# -alias buildDemo (icesslkey是我们第3步中取的别名)
# -keyalg RSA (RSA是非对称密钥算法,也可以改为keytool支持的其他密钥算法)
# -vlidity 3650 (3650是证书有效期)
# -keystroe buildDemo.jks ( buildDemo.jks是生成的keystore名称)
2)也可以在Android Studio中生成(具体步骤可以看参考文献[1])
在Android Studio中 build --> generate Signed Bundle/apk 下
3、编译生成apk文件
1)在命令行执行如下命令下载gradle的一些依赖包
gradle clean
2)编译并打包(进入项目的根目录下执行)
gradle assembleDebug # 生成Debug版本的apk文件
gradle assembleRelease # 生成Release版本的apk文件
关于Android程序的签名详解可以参考文献[1],里面说的特别详细。
参考文献:
[1] https://blog.csdn.net/lyankj/article/details/51840138