需求
利用gradle打包时,不止要动态替换配置文件的package,希望生产的 资源文件(R.Strings,R.values)R文件的包名也发生变化,android的gradle 插件默认是不支持的
一,代码目录结构
二,修改 Top-level build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
description 'Clean the build files'
delete rootProject.buildDir
}
tasks.getByPath("app:pre[Flavors_baidu]ReleaseBuild").dependsOn ":app:flavors_baidu_release"
tasks.getByPath("app:pre[Flavors_baidu]DebugBuild").dependsOn ":app:flavors_baidu_debug"
tasks.getByPath("app:pre[Flavors_360]ReleaseBuild").dependsOn ":app:flavors_360_release"
tasks.getByPath("app:pre[Flavors_360]DebugBuild").dependsOn ":app:flavors_360_debug"
- 直接在构建不同变体时调用自定义的任务,任务定义在 app/build.gradle
三,修改 Second-level build.gradle
配置 flavors
android{
productFlavors {
flavors_baidu{
applicationId 'com.baidu.demo'
versionNameSuffix '.baidu'
}
flavors_360{
applicationId = "com.360.demo"
versionNameSuffix '.360'
}
}
}
自定义任务
android{
task flavors_baidu_release() {
doFirst {
println "----------------------------flavors_baidu_release--------------------------------------"
sourceSets.main. manifest.srcFile 'src/baidu/AndroidManifest_baidu.xml'
println sourceSets.main. manifest.srcFile
println "----------------------------flavors_baidu_release--------------------------------------"
}
}
task flavors_baidu_debug() {
doFirst {
println "----------------------------flavors_baidu_debug--------------------------------------"
sourceSets.main. manifest.srcFile 'src/main/AndroidManifest_baidu.xml'
println sourceSets.main. manifest.srcFile
println "----------------------------flavors_baidu_debug--------------------------------------"
}
}
task flavors_360_release() {
doFirst {
println "----------------------------flavors_360_release--------------------------------------"
sourceSets.main. manifest.srcFile 'src/360/AndroidManifest_360.xml'
println sourceSets.main. manifest.srcFile
println "----------------------------flavors_360_release--------------------------------------"
}
}
task flavors_360_debug() {
doFirst {
println "----------------------------flavors_360_debug--------------------------------------"
sourceSets.main. manifest.srcFile 'src/360/AndroidManifest_360.xml'
println sourceSets.main. manifest.srcFile
println "----------------------------flavors_360_debug--------------------------------------"
}
}
}
- OK 没了