Gradle构建变种版本(多渠道打包)
2017-09-04Android

<!--more-->构建变体是 Gradle 按照特定规则集合进行打包,以生成适应不同需求的Apk包。 例如,需要生成dev版,测试版、以及release版,它们的服务器地址,版本号,图标各不相同,以及多渠道打包等等。
productFlavors
可以定义多个productFlavors版本,其继承覆盖所有defaultConfig中的字段
主要的使用手段有一下几种
- 覆盖defaultConfig默认字段(包名、版本名等)
- 往AndroidManifast.xml文件注入编译变量
- 修改包名,支持前后缀
- 使用buildConfigField动态改变编译时常量
- 使用resValue动态注入字符串资源
示例
android {
    ...
    defaultConfig {
        versionCode 200
        versionName 'V2.0.0'
        manifestPlaceholders = [
                scheme: "FindAR"
                id    : "1565483848"
        ]
        buildConfigField "String", "ROOT_FOLDER_NAME", '"FindAR"'
    }
    productFlavors{
       dev{
           versionName 'V2.0.0 Dev'
           resValue "string", "user_id", "001" //user id
       }
       production{
           versionName 'V2.0.0 Release'
           resValue "string", "user_id", "002" //user id
       }
   }
}