美文网首页
Gradle中productFlavors的使用

Gradle中productFlavors的使用

作者: DD_Dog | 来源:发表于2019-12-03 09:22 被阅读0次

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的时候的不同了:


image.png

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

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


image.png

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

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

奉上源码

更多维度请参考Android Gradle(3)— FlavorDimensions,构建变体

相关文章

网友评论

      本文标题:Gradle中productFlavors的使用

      本文链接:https://www.haomeiwen.com/subject/hzbfgctx.html