Gradle中productFlavors的使用

简介: 笔记

productFlavors的作用是在一套代码上编译不同的APK版本。

例如发布不同的渠道,使用不同的服务器地址,不同的图标,不同的包名等等。这些差异可大可小,如果差异很多那么就相当于两个完全不同的APK了,那么就就近似于两个Module,这时也就失去了它的意义了。

productFlavors在编译时的作用其实很简单,就是根据gradle配置,编译对应产品的源码文件,资源文件等。


实例讲解


先上build.gradle的代码:

android{
  productFlavors{
    productA{
        applicationId "com.flyscale.gradleflavor.a"
        versionName "version-a-1.0"
        buildConfigField("String", "PRODUCT_NAME", "\"a\"");
        buildConfigField("boolean", "LOG_DEBUG", "true");
          resValue("")
    }
    productB{
        applicationId "com.flyscale.gradleflavor.b"
        versionName "version-b-1.0"
        buildConfigField("String", "PRODUCT_NAME", "\"b\"");
        buildConfigField("boolean", "LOG_DEBUG", "false");
    }
  }
}

我定义了两个产品productA和productB,配置不两个产品不同的包名,定义了两个变量PRODUCT_NAME和LOG_DEBUG。到这时sync一下就可以看到build的时候的不同了:


1.png

image.png


这里可以选择你要debug的不同产品。

为不同产品区分代码,新建产品的目录,结构跟main其实是一样的,甚至可以理解不同目录为不 同的分支:


2.png

image.png


可以看到,产品A和产品B定制了不同的java源文件,res资源和AndroidManifest.xml。

其实也没啥好讲的,用法很简单,只是一个小工具而已,而且如果不需要多渠道打包或者类似情况,其实没啥用。


目录
相关文章
|
5月前
|
Java Shell
Gradle的安装及换源
Gradle的安装及换源
3302 1
|
6月前
|
Java Maven Spring
gradle 配置指南
配置Gradle指南:在`build.gradle`中添加仓库,如阿里云公共库`maven { url 'https://maven.aliyun.com/repository/public/' }`和Spring库`maven { url 'https://maven.aliyun.com/repository/spring/' }`。然后声明依赖`dependencies { compile '[GROUP_ID]:[ARTIFACT_ID]:[VERSION]' }`,最后运行`gradle dependencies`或`./gradlew
|
6月前
|
XML Java Android开发
gradle配置
gradle配置
73 0
|
Java API Maven
Gradle使用总结
Gradle使用总结
251 0
|
Java Maven Android开发
gradle
Gradle 是一个现代化的构建工具,它可以帮助开发人员管理项目依赖、构建项目、运行测试、打包和部署项目等。与 Maven 类似,Gradle 也是一种基于约定的构建系统,它不仅可以管理 Java 项目,还可以管理 Android 应用程序、Kotlin 项目、Groovy 项目等。
1520 1
|
前端开发 Java Maven
Gradle build.gradle 文件
Gradle build.gradle 文件
Gradle build.gradle 文件
Gradle Avoiding traps
Groovy script variables 4. Groovy 脚本变量 对于 Groovy DSL 的用户来说,了解 Groovy 如何处理脚本变量非常重要。 有两种类型的脚本变量。 一个具有本地作用域,另一个具有脚本范围。 Example: Variables scope: local and script wide 示例: 变量范围: 本地范围和脚本范围 scope.groovy String localScope1 = 'localScope1' def localScope2 = 'localScope2' scriptScope = 'scriptScope' println
121 0
|
Java Android开发
浅谈Gradle(二)与SourceSets
之前写过了一篇Gradle(一),那是根据别人写的文章总结写的,当时其实还是很多不懂,包括我现在对gradle的理解也其实还是似懂非懂,但是还是要写,每次写完之后包括再重新多看几次,都会有新的感悟。
3020 0
|
Java Apache Kotlin
Gradle系列01 Gradle介绍与安装
说明 Gradle官网 版本:gradle-5.6.4 系统:macOS Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。