Android组件化探索之Library productFlavors

标签: 组件化 productFlavors


问题背景

组件化的时候,会有一个App module(主module),多个业务module,一堆lib module。现在假如App module是App.module,有一个业务module叫login.module,还有一个lib module叫lib.module。组件化是一个项目解耦的过程,所以需要把每个业务module公用的功能抽离到lib.module中比如网络请求模块,假如叫networkUtil,networkUtil进行网络请求的host地址是需要根据当前编译打包的productFlavors来区分的,之前我们习惯把productFlavors配置在App.module的build.gradle中
比如这样

 productFlavors {
        dev {
            buildConfigField("String", "env", properties.getProperty("env"))
        }

        rel {
            buildConfigField("String", "env", properties.getProperty("env"))
        }
    }

但是要把网络请求相关东西都抽离在lib.module,所以也需要在lib.module中配置productFlavors,而且还需要让lib.module中的productFlavors在编译时始终和App.module的productFlavors保持一致,才能保证项目环境的实时有效性,这篇文章就解释一下如何实现这种需求。

配置方式

  • lib.module中需要配置和App.module中大致相同的productFlavors
publishNonDefault true //注意,这里的配置是为了去除gradle对library module默认只编译release buildType的限制
 productFlavors {
        dev {
            buildConfigField("String", "env", properties.getProperty("env"))
        }

        rel {
            buildConfigField("String", "env", properties.getProperty("env"))
        }
    }
  • App.module中需要在dependencies中增加compile支持
devCompile project(path: ':lib.module', configuration: 'devRelease')
relCompile project(path: ':lib.module', configuration: 'relRelease')

这样就已经可以实现问题背景中描述的需求,实现lib.module的productFlavors跟随App.module中productFlavors动态保持一致(可以通过在studio中配置不同的Build Variants来测试效果)。其实不管是Application module,还是一个library module,只要需要依赖lib.module,都需要在自身的build.gradle中配置同样的productFlavors。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,729评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,178评论 6 342
  • 不怕跌倒,所以飞翔 组件化开发 参考资源 Android组件化方案 为什么要组件化开发 解决问题 实际业务变化非常...
    笔墨Android阅读 8,136评论 0 0
  • 从我小学五年级,一直到高中毕业,许多人都对我说过,“你是一个特别的人”。或者,当那些想要个乖孩子的老师和家长们想表...
    李子李子短信阅读 4,235评论 0 25

友情链接更多精彩内容