一、添加渠道
flavorDimensions "Flavors"
productFlavors {
envDevelop {
dimension "Flavors"
buildConfigField "int", "HOST_TYPE", "1"
manifestPlaceholders = [app_name: "@string/app_name"]
}
envRelease {
dimension "Flavors"
buildConfigField "int", "HOST_TYPE", "3"
manifestPlaceholders = [app_name: "@string/app_name3"]
}
}
二、渠道动态依赖
注意渠道名必须为小写字母开头,否则编译不过
envDevelopApi project(':BleLibrary')
envReleaseApi project(':BleLibrary')
三、根据渠道重命名导出的apk文件
applicationVariants.all { variant ->
variant.outputs.all { output ->
//打包的apk文件名称:bleDemo_渠道_版本名
def fileName = "bleDemo_${variant.productFlavors[0].name}_v${variant.versionName}.apk"
def outFile = output.outputFile
if (outFile != null && outFile.name.endsWith('.apk')) {
outputFileName = fileName
}
}
}
四、差异化全局参数和manifest文件占位符
manifest文件占位符
举例图标和名称使用占位符app_name、app_icon:
android:icon="${app_icon}"
android:label="${app_name}"
不同渠道给占位符赋值
flavorDimensions "Flavors"
productFlavors {
envDevelop {
dimension "Flavors"
buildConfigField "int", "HOST_TYPE", "1"
manifestPlaceholders = [app_name: "@string/app_name",app_icon:"@mipmap/ic_launcher_round"]
}
envRelease {
dimension "Flavors"
buildConfigField "int", "HOST_TYPE", "3"
manifestPlaceholders = [app_name: "@string/app_name3",app_icon:"@mipmap/ic_launcher_round"]
}
}
BuildConfig全局常量
设置后java BuildConfig自动生成对应常量注意字符串需要带转译引号
buildConfigField "int", "HOST_TYPE", "1" buildConfigField "boolean", "ok", "true" buildConfigField "String", "HOST_NAME", "\"字符串\""