Android gradle 中使用productFlavors

What

productFlavors是在gradle中配置多渠道的打包的工具。

Why

使用productFlavors区分不同的产品,定义不同的逻辑,使构建部分有差异的Android项目更加方便。

How

1.创建不同的产品

app:级别下的gradle文件中,加入productFlavors\

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        ....
    }
    buildTypes {
      ....
    }

    sourceSets {
        ....
    }
     //创建productFlavors
    productFlavors {

    }
}

2.创建不同的产品,并为不同产品分配专有属性

productFlavors下创建产品producttemp

productFlavors {
    //新建产品product
    product {
        //程序包名
        applicationId "study.ung.differentsource.product"
        //不同渠道号
        manifestPlaceholders = [UMC:"product-Complete"]
        //versionName
        versionName "1.0.0"
        //versionCode
        versionCode 1

    }
    //新建产品temp
    temp {
        //程序包名
        applicationId "study.ung.differentsource.temp"
        //不同渠道号
        manifestPlaceholders = [UMC:"product-Temp"]
        //versionName
        versionName "2.1.1"
        //versionCode
        versionCode 2
    }

    //...Others

3.设置不同代码引用

如果项目中对不同产品区分不同的代码,比如服务器地址的区分,或者某些其他常量的区分。

1.先在src目录下简历对应的文件夹,比如java代码则建立,product/java,res文件夹则建立product/res

这里写图片描述

说明:当前选取的渠道文件夹颜色会与未选取的有差异

2.建立包名,建立Java类文件

这里写图片描述

注意:最好先切换到对应的产品类型,再建立包与类文件

3.在app-level下的gradle文件中设置sourceSets

//不同产品不同的文件
product {
    java.srcDirs = ['src/product/java']
}
temp {
    java.srcDirs = ['src/temp/java']
}

4.设置不同的产品引入不同的包

使用方式:产品名Compile “xxx.xxx.xx”

//不同产品引入不同的包
productCompile "com.android.support:appcompat-v7:26.+"
tempCompile "com.android.support.constraint:constraint-layout:1.0.2"

源码地址

productFlavors源码

猜你喜欢

转载自blog.csdn.net/mp624183768/article/details/80683476