对于产品上线后的渠道推广需要打出多个不同的渠道包,基本上每个渠道包的主体功能是一样的,只需要改变包名、版本号、applicationId、app名称这些,此时就必须用到gradle进行不同渠道参数的配置了。
一、配置包名、版本号、applicationId、app名称
在build.gradle文件中的android{}中新增productFlavors{
此处可以自定义包名、版本号、applicationId、app名称
}代码如下在这里插入代码片
productFlavors {
gamename_channel_1{
versionName "1.0.0"
applicationId "com.gamename.channel1"
resValue "string", "app_name", "gameName1"
manifestPlaceholders = [ package_name : applicationId]
}
gamename_channel_2{
versionName "1.0.0"
applicationId "com.gamename.channel2"
resValue "string", "app_name", "gameName2"
manifestPlaceholders = [ package_name : applicationId]
}
}
配置完后通过gradle的打包命令 gradlew assembleRelease 即可一次生成多个渠道包。
**注意:**定义app_name需要把之前string.xml中的app_name改成其他名称,防止重名,如之前的string.xml内容为"app_name" gradle中自定义了app_name后,此时string.xml中内容可修改为"app_name1"
二、配置不同渠道打包对应不同的资源
在android{}中新增sourceSets{此处可自定义资源路径}配置如下,其中配置的目录结构需要在src下新增对应目录,
sourceSets {
gamename_channel_1{
assets.srcDirs = ["src/channel1/assets/"]
}
gamename_channel_2{
assets.srcDirs = ['src/channel2/assets/']
}
三、签名配置
在android{}中新增signingConfigs{此处自定义签名文件配置} 配置示例如下:
此处配置的test_key.jks文件位于项目根目录下
//签名文件配置
signingConfigs {
debug {
storeFile file("../test_key.jks")
storePassword "123456"
keyAlias "key0"
keyPassword "123456"
}
release {
storeFile file("../test_key.jks")
storePassword "123456"
keyAlias "key0"
keyPassword "123456"
}
}
//编译方式指定对应签名文件
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
signingConfig signingConfigs.release
}
}
四、打包apk自定义文件名:
渠道多了,如果每次打出的apk名称都一样,还得需要手动修改文件名加版本号,那得多麻烦,多渠道打包生成对应渠道文件名称的apk可以按照以下配置,同样也是新增修改android{}对象的属性
//注意app_前缀不能省,出了问题不负责
android.applicationVariants