美文网首页
【白水日记】gradle flavor在Android

【白水日记】gradle flavor在Android

作者: d2665f7588cb | 来源:发表于2021-02-18 09:19 被阅读0次

     productFlavors是gradle的一个标签,主要用以区分渠道,也可用来区分debug,和release包,可以在物理层区分线上线下,甚至可以区分包名,一个手机可以装两个包,那么可不可以通过flavor来实现标准版和精简版呢?答案是可以的

    新建一个工程,在gradle配置文件中,创建两个flavor

生效之后,我们现在就得到了4个build variant

之后在app/src目录下新建一个global目录

创建目录和名字没有严格要求,关键是配置sourceSets时要写对相应的路径

这里通过sourceSets里的name属性,过滤了global版本和其他,如果有更详细的需求,可以再累加

    另外通过sourceSet.java.srcDirs配置java文件路径,通过manifest.srcFile配置manifest.xml,res,aidl,assets都可以区分配置,这里就不再赘述

最核心的代码是获取当前渠道配置,这里为了看着更清晰,额外定义了一个变量channel

   我这里通过gradle的startParameter.getTaskNames()方法,区分编译的渠道是哪个,需要注意的是task的内容是驼峰的,所以需要手动调用toLowerCase()方法,给channel赋值,这个channel是可以在dependencies标签中生效的

    举个例子,在国际版中不引用其他三方库,在其他渠道中,引用一个glide4

虽然这里也可以使用类似前缀chinaDebugImplementation方法区分开来,但是不方便管理,而且有一定局限性,这里不详细展开,还是推荐直接用渠道动态分开

分别打包,查看apk

    生成了2个apk

    可以看到两个apk的大小都不一样,查看里面的内容

两者对比,确实在引用依赖上有了区别

另外补充一点,一旦区分了AndroidManifest.xml,就相当于有两个配置文件,两个主入口activity,区分之后,从项目设计的角度,要考虑到后续改动的需求,是否要将工具类,资源文件进行合理的隔离,从业务角度进行完整的拆分,不要有任何依赖的情况,尤其是项目变大之后,不可牵一发而动全身

相关文章

  • 【白水日记】gradle flavor在Android

    productFlavors是gradle的一个标签,主要用以区分渠道,也可用来区分debug,和release包...

  • Gradle Flavor

    一、配置多类型build 在模块级 build.gradle 文件中的 android 代码块内, buildTy...

  • 【白水日记】Gradle

    关于gradle,是我们熟悉又陌生的事物,每次运行项目都在用,但是一些细节,却不太了解,不如做一次查缺补漏 gr...

  • Android新增Flavor与模块化

    Android Flavor 为了支持同一套代码能够生成多个版本的应用,Android提供flavor来实现该需求...

  • 【白水日记】Gradle(二)

    gradle稍微复杂一点的能力,就是gradle插件,可以提供具体的构建功能task,提高代码的复用性,编译jav...

  • 【白水日记】Gradle(三)

    上一篇我们分析了gradle插件的简单使用,这次我们看看如何自定义gradle工程的扩展配置 新建一个目录,将之前...

  • 详解Gradle之flavor

    flavor配置不同包名 productFlavors 设置的不同环境包名会覆盖 defaultConfig 里面...

  • Gradle中Flavor使用

    一、前言 本文主要分享Gradle中两个参数flavorDimensions和productFlavors,而这两...

  • 【白水日记】git submodule在Android

    我们平时开发的时候,经常要引用其他库,组件,有的时候是我们自己的,有时候别的项目组的,有时候是第三方的。放在我们自...

  • Android Gradle 多渠道打包

    多渠道打包: First step:在build.gradle配置文件中添加flavor: 至此我们添加了两个fl...

网友评论

      本文标题:【白水日记】gradle flavor在Android

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