1.简介
由于android应用市场比较多,项目上线之前需要对每个市场进行打包,单独打包当然可以,但是如果要上传的市场比较多,这个工作量就比较大了,万一打包出现点问题还要重新再次打包,想想都害怕,所以我们可以采用多渠道打包的方式,在进行一些简单的配置后,可以一次性打包所有指定的各渠道apk文件,传统的eclipse一般使用ant进行多渠道打包,此处不作介绍,感兴趣的可以自行google学习,随着Android Studio开发工具的不断普及,所以介绍下Android Studio使用gradle来实现多渠道打包。
2.签名文件的配置
使用signingConfigs进行签名配置,下面代码分别配置了debug 版和release版的签名信息.
signingConfigs {
//debug版签名配置
debug {
//key别名
keyAlias 'test'
//key密码
keyPassword '123456'
//密钥文件路径
storeFile file('D:/AndroidStudioWork/MyApplication/test.jks')
//密钥文件密码
storePassword '123456'
}
//发布版签名配置
release {
//key别名
keyAlias 'test'
//key密码
keyPassword '123456'
//密钥文件路径
storeFile file('D:/AndroidStudioWork/MyApplication/test.jks')
//密钥文件密码
storePassword '123456'
}
}
3.buildTypes的配置
使用buildTypes指定编译时使用的签名配置.
buildTypes {
//debug使用上面debug的配置
debug {
signingConfig signingConfigs.debug
}
//release使用上面release的配置
release {
signingConfig signingConfigs.release
}
}
4.productFlavors的配置
使用productFlavors指定需要的渠道.
/*
指定多个渠道
*/
productFlavors {
dev {
manifestPlaceholders = [channel: "dev"]
}
official {
manifestPlaceholders = [channel: "official"]
}
xiaomi {
manifestPlaceholders = [channel: "xiaomi"]
}
wandoujia {
manifestPlaceholders = [channel: "wandoujia"]
}
"360" {
manifestPlaceholders = [channel: "360"]
}
}
5.打包
使用gradlew build命令进行打包操作,打好成功后会出现下图success的提示:
然后打开输出目录会看的打好的包,包含debug和release版本:
6.修改默认输出apk包的名字
上图中apk包名字是默认的,我们自己定义下:测试+buildtype+版本+渠道名,当然你也可以定义其他的,定义方式在build.gradle文件中添加如下配置:
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(
output.outputFile.parent,
"测试-${variant.buildType.name}-${defaultConfig.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase())
}
}
然后执行gradlew build命令打包:
7.gradlew命令介绍
介绍一下常用的gradlew 命令含义:
gradlew assembleDebug 编译并打Debug包
gradlew assemblexiaomiDebug 编译并打xiaomi的debug包,其他类似
gradlew assembleRelease 编译并打Release的包
gradlew assemblexiaomiRelease 编译并打xiaomi的Release包,其他类似
gradlew installRelease Release模式打包并安装
gradlew uninstallRelease 卸载Release模式包
gradlew clean 删除app目录下的build文件夹
gradlew build 检查依赖并编译打包
参考资料:
1.Android Studio 多渠道打包、自动版本号及 gradlew 命令的基本使用