Android 打包签名配置和流程
AndroidStudio 中打包是非常Very的方便的
首先介绍 gradle Task的方式打包
1. 创建apk签名文件(如果你已经创建过,请忽略这个步骤)
菜单栏一次选中 build
-> Generate Signed Bundle / APK...
-> APK
-> Create New
-> 填写对应信息 然后确定,签名文件就创建成功了



注意方框中都是必须要填写的值

2.moudle 的build文件 中配置签名文件相关的信息
app/build.gradle
android {
signingConfigs {
debug {
storeFile file('../demoKey.jks')
storePassword '123456'
keyAlias 'demoKey'
keyPassword '123456'
}
release {
storeFile file('../demoKey.jks')
storePassword '123456'
keyAlias 'demoKey'
keyPassword '123456'
}
}
}
其中 ‘…/demoKey.jks’ 表示签名文件在当前build.gradle文件的上一级目录(准确说是和当前运行的moudle 有关系)
当然你可以生成多个签名文件 ,debug和release使用不同的签名,当然我们一般的都是使用相同签名的,因为这样调试比较的方便
3.指定签名文件使用配置签名信息
android {
signingConfigs {
debug {
storeFile file('../demoKey.jks')
storePassword '123456'
keyAlias 'demoKey'
keyPassword '123456'
}
release {
storeFile file('../demoKey.jks')
storePassword '123456'
keyAlias 'demoKey'
keyPassword '123456'
}
}
//这一段必须在上面一段代码的下面
buildTypes {
debug {
//混淆使能
minifyEnabled false
//配置混淆指定文件,混淆代码必须写在这个文件里面
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定签名使用使用哪一个
signingConfig signingConfigs.debug
}
release {
minifyEnabled false
//配置混淆指定文件,混淆代码必须写在这个文件里面
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定签名使用使用哪一个
signingConfig signingConfigs.release
}
}
}
5. 渠道配置
android {
signingConfigs {
debug {
storeFile file('../demoKey.jks')
storePassword '123456'
keyAlias 'demoKey'
keyPassword '123456'
}
release {
storeFile file('../demoKey.jks')
storePassword '123456'
keyAlias 'demoKey'
keyPassword '123456'
}
}
//这一段必须在上面一段代码的下面
buildTypes {
debug {
//混淆使能
minifyEnabled false
//配置混淆指定文件,混淆代码必须写在这个文件里面
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定签名使用使用哪一个
signingConfig signingConfigs.debug
}
release {
minifyEnabled false
//配置混淆指定文件,混淆代码必须写在这个文件里面
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定签名使用使用哪一个
signingConfig signingConfigs.release
}
}
//配置发布渠道
productFlavors {
baidu {} //渠道名
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
}
6. 渠道配置 AndroidManifest.xml 文件节点
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
注意 UMENG_CHANNEL_VALUE 需要和build文件中的
[UMENG_CHANNEL_VALUE: name]
对应
7.配置apk输出文件
android {
...
// 自定义输出配置,这里我们加上APK版本号1.0
applicationVariants.all { variant ->
variant.outputs.all { output -> // each 改为 all
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为wooyun_v1.0_wandoujia.apk
def fileName = "beautifulLife_v${defaultConfig.versionName}_${variant.productFlavors[0].name}_${variant.buildType.signingConfig.name}.apk"
// File file = new File(outputFile.parent, "build/outputs/apk/relaseApks")
File file = new File(outputFile.parent)
if (!file.exists()) {
file.mkdirs()
}
outputFileName = fileName // output.outputFile 改为 outputFileName
}
}
}
}
8.开开心心的打包吧

版权声明:本文为bencheng06原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。