一个工程可能会有多个版本,有国际版、国内版、还有针对各类不一样的渠道化的打包版本、这个属于咱们平常常常见到的打包差别化版本需求。android
而对于工程的开发,好比之前的公司,分红了有三大块业务,一个是听、一个是看、一个是唱,咱们可能会各自分红不一样的小组去作各自功能的开发,而后再把三块的业务整合到一块儿打包,这个就是不也涉及到了app的组件化分块开发。针对这个需求,我有点好奇,了解了下市面上的组件化开发,大部分是使用到的是阿里开源的ARoute框架,加上基于gradle的dsl的构建,来知足愈来愈差别化的对于咱们开发成员按模块进行分组开发的需求。针对之前公司由于没具体接触到,具体不详。这儿只针对对于jimu的开源,感谢它的开源,让咱们能够了解更多的世界。app
而这儿主要是想先涉及到到首先是gradle的构建,如何让模块能够单独运行而不须要去从编译- 构建 运行整个工程而看到本身想要实现的一部分呢?框架
这儿咱们能够先从咱们android studio工程目录的一个文件提及,gradle.properties提及组件化
在Android Studio 建立一个项目的时候,rootProject下面会生成gradle.properties和local.properties文件gradle
properties实际上是Java项目中的配置文件,不是Gradle首创的。又由于Gradle语法能够和Java进行混合使用,因此在Java项目上面使用properties文件的方式,在Gradle上面也可使用。
Gradle借用了这一点,因此内置了对gradle.properties的使用方式ui
properties里面的数据格式采用键值对的方式,大概有如下几种写法:
1. key=value
2. key:value
3. key :value
4. # 做为注释 spa
基于这个配置文件,咱们就能够对其作些咱们本身须要作的配置,好比上面配置文件咱们定义多了一个变量,isRunAlone,是否能够单独运行,这个是后面可能会用到的一个变量,也是咱们能够基于这个条件去作判断,是否当前module是能够单独运行,更改其值,从新同步下,就能够获取,接着看咱们的定义的build.gradle文件插件
if(isRunAlone.toBoolean()){ apply plugin: 'com.android.library' }else{ apply plugin: 'com.android.application' }
这儿是定义给可能咱们模块会给其余模块用到,针对gradle.properties的修改其值,咱们就能够作到先最简单的对于module的单独能够运行的条件了。blog
暂时先写到这儿,其实这儿每次须要修改值和同步是个耗费时间的工程,后面其实咱们能够针对proerties的是否单独运行isRunAlone能够为其又作一层封装,也是最近开始研究的基于groovy的gradle插件的建立,对其进行判断,而后使用这个插件咱们能够作到只要配置这个插件咱们就能够在选择咱们对应的module和一些参数值,就能够自动的运行咱们想要获得的结果,是不听起来更强大了。开发