Android多渠道之自定义apk输出

  • ~3.09K 字

一般我们在制作多渠道的时候通常是针对productFlavors属性的处理。

如何分渠道?

  1. 针对build.gradle中的productFlavors属性进行处理。
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
productFlavors {
quality {
dimension "version"
buildConfigField('String', 'TYPE', '"Phone"')
buildConfigField('boolean', 'NEED_PUSH', 'true')
manifestPlaceholders = [
app_icon : "@mipmap/icon",
app_name : "@string/app_name"
]
}
tb {
dimension "version"
buildConfigField('String', 'TYPE', '"Phone"')
buildConfigField('boolean', 'NEED_PUSH', 'true')
manifestPlaceholders = [
app_icon : "@mipmap/icon_tb",
app_name : "@string/app_name_tb"
]
}
dabieshan {
dimension "version"
buildConfigField('String', 'TYPE', '"Phone"')
buildConfigField('boolean', 'NEED_PUSH', 'true')
manifestPlaceholders = [
app_icon : "@mipmap/icon",
app_name : "@string/app_name"
]
}
xulong {
dimension "version"
buildConfigField('String', 'TYPE', '"Phone"')
buildConfigField('boolean', 'NEED_PUSH', 'true')
manifestPlaceholders = [
app_icon : "@mipmap/icon",
app_name : "@string/app_name"
]
}
}

可以看到,分完渠道后,我们可以针对不同的渠道构建不同的icon或者APP名称等,当然这只是在各个渠道区别较少的时候,在各渠道变化较大时就需要分包方式处理了。

如何根据渠道输出不同的apk?(基于Android studio4.1.1)

  1. 目前来说,渠道定义好了后,在编译打包后,会自动构建相应渠道的文件夹,类似下面的

    但是如果没有处理的话,打包出来的apk名称都是一样的
  2. 各个渠道特定的apk名称
1
2
3
4
5
6
7
8
9
10
11
12
13
applicationVariants.all { variant ->

if (variant.buildType.name == 'release') {
variant.outputs.all {
// outputFileName = "${productFlavors.name}_app_${defaultConfig.versionName}.apk" //[quality]_app_v1.0.28_20210104.apk 带中括号
outputFileName = "${variant.productFlavors[0].name}_app_${defaultConfig.versionName}.apk"
}
}else{
variant.outputs.all {
outputFileName = "${variant.productFlavors[0].name}_app_debug_${defaultConfig.versionName}.apk"
}
}
}

build.gradleandroid节点下创建applicationVariants来输出apk
defaultConfig.versionName对应我们自己定义的versionName
variant.productFlavors[0].name 对应我们定义的渠道名

尝试过使用{productFlavors.name,但是输出的是带中括号的字符比如[quality],显然不太符合我们的要求。

最后我们输出的apk名称就是类似quality_app_v1.0.28_20210104.apk了。

赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!