android 多模块依赖关系图,记录一下 Android Studio 多模块构建过程

多模块构建的结构

通常情况下,一个工程包含多模块,这些模块会在一个父目录文件夹下。为了告诉gradle,该项目的结构以及哪一个子文件夹包含模块,需要提供一个settings.gradle文件。每个模块可以提供其独立的build.gradle文件。

多模块项目结构如下:

370b4cd612a4f2c3089f711d6bec928e.png

需要做的就是在settings.gradle中声明项目中的所有模块include ':device', ':cqdeviceset'复制代码

可以看到这里没有as 新建项目时默认的模块app,  这也是可以修改的, 将app重命名并在settings.gradle中声明即可, 在我的项目中改为device.

同时项目中还引入了外部SharedLib作为依赖包

先看下依赖包结构

7e270f5e7e9da61b765a42100211a8f3.png

具体引入步骤如下:settings.gradle中声明

include ':SharedLib'

project(':SharedLib').projectDir = new File('../SharedLib')//依赖包地址

include ':SharedLib:DeviceLib' //依赖包中包括的子模块复制代码

2.  在需要使用该依赖包的模块的build.gradle文件中添加以下内容:

dependencies {

compile project(':SharedLib:DeviceLib')

}复制代码

为了给模块添加依赖,你需要使用project()方法,该方法的参数为模块路径。

构建生命周期

初始化阶段,gradle会寻找到settings.grade文件。如果该文件不存在,那么gradle就会假定你只有一个单独的构建模块。如果你有多个模块,settings.gradle文件定义了这些模块的位置。如果这些子目录包含了其自己的build.gradle文件,gradle将会运行它们,并且将他们合并到构建任务中。模块tasks

项目中有多个模块的时候,  如何多模块同时编译? 只需要在terminal运行

gradlew assembleRelease

复制代码

如何运行指定模块?同样只需要在terminal运行

gradlew :device:assembleRelease

复制代码

如果想同时编译多个模块(我的项目中有7个模块),只需要在terminal运行

gradlew :mqupload:assembleRelease :mqdownload:assembleRelease复制代码

gradle图形化

当有多个模块,Android studio会分析出来,并且展示在gradle中,点击AS右侧的gradle即可看到,结构如下图:

c853db053e103c355d089dd381e2b9b8.png

grade图形化让运行模块间的任务变得简单,但是其没有为所有模块同时运行一个任务,所以最快的方式是使用命令行。加速多模块构建

当构建多模块项目,gradle会依次执行所有的模块。当电脑内存够大的时候,使构建过程多线程将会更快。该特性在gradle早已存在,但是其默认关闭。

所以如果你希望启动parallel构建,你需要在grade.properties文件中配置如下属性:

org.gradle.parallel=true复制代码

gradle会选择尽可能多的线程去执行你的构建过程,每个线程都会执行一个模块。parallel执行的是独立的模块,即你的模块是独立的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值