一、添加渠道
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", "\"字符串\""