android productFlavors的用法之——gradle 配置productFlavors &子模块配置productFlavors

前言

1、什么时候用到在子模块配置productFlavors
	当子模块需要「配置不同信息」时,可以使用。
	比如:
	(1)子模块在不同开发环境(uat、sit)使用不同的请求地址url,可以配置productFlavors用来区分调用即可;
	(2)当使用模块化开发时,可以专门抽出一个子模块配置productFlavors,这样其他模块只需要依赖该子模块,就可以全局使用子模块的配置信息;
2、备注:「子模块配置样式」与「主模块配置样式」应保持一致;

配置
1、主模块配置productFlavors

app/build.gradle

android {
  ...
    flavorDimensions 'default' // 定义必要的配置 否则会报错
    productFlavors {
        dev { 
            dimension = 'default'
             // 定义不同的包名
            applicationId = "com.test.demo1"
            // 自定义buildConfig.java中的变量供代码中使用
            buildConfigField "String", "APPID_BUGLY", '"12345"' 

        }

        sit {
            dimension = 'default'
            applicationId = "com.test.demo2"
            buildConfigField "String", "APPID_BUGLY", '"67890"'

        }
    }
}

2、子模块配置productFlavors

module/build.gradle

android {
...
    publishNonDefault true
    flavorDimensions 'default'
    productFlavors {
        dev {
            dimension = 'default'
            // 自定义buildConfig.java中的变量供代码中使用
            buildConfigField "String", "BASE_URL", '"http://158.223.12.22:8080"'
            buildConfigField "String", "RESOURCE_URL", '"http://158.223.12.22:8080"'
        }

        sit {
            dimension = 'default'
            // 自定义buildConfig.java中的变量供代码中使用
            buildConfigField "String", "BASE_URL", '"http://158.223.12.11:9090"'
            buildConfigField "String", "RESOURCE_URL", '"http://158.223.12.11:9090"'
        }
    }
}

只需要其他模块依赖该子模块,就可以全局使用该子模块的配置信息。
所以可以抽出一个「公共子模块」专门用来做「配置信息」使用。

你可能感兴趣的:(Android)