有这样一个开发场景,有不同的应用产品,产品的用户逻辑和程序接口是一致的,只是UI有着很大不同,但又不想生成新的工程或者新的分支来维护不同的产品,于是多渠道打包就带来很大的帮助了。配置多渠道打包步骤如下:
配置app下的build.gradle,定义flavorDimensions渠道维度,再定义productFlavors 产品类别,最后定义sourceSets资源路径。
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 25
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
flavorDimensions("product")
productFlavors {
productTest1 {
buildConfigField "Integer", "type", "1"
resValue "string", "type", "test1"
}
productTest2 {
buildConfigField "Integer", "type", "2"
resValue "string", "type", "test2"
}
}
sourceSets {
productTest1.res.srcDirs = ["src/main/res"]
productTest2.res.srcDirs = ["src/main/res-test2"]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
新建productTest2渠道的资源目录res-test2。
打包多渠道apk,选择AndroidStudio左下角的Build Variants选项,可以选择当前工程下的多个渠道进行打包编译。
在Build Variants选项选择了渠道,通过Make生成的apk则为应用选中渠道资源的apk。
也可以Build Variants选项选择apk,通过Generate Signed Bundle / APK…生成apk时可以选择打包不同渠道的apk。
不同渠道生成的apk路径对应不同目录。