构建生命周期
懂得了构建过程让你懂得多模块的构建变得轻易。我们很早前谈过关于构建的生命周期。所以如今你应当知道其根本的过程,然则一些很重要的细节可能你并不是很清跋扈。
一旦你懂得了构建义务是若何将所有的模块聚合在一路的时刻,那关于几种不合的构建多模块策略就会变得简单易懂。你可以设备所有的模块在根目次下的build.gradle。这让你可以或型R单的浏览到全部项目标设备,然则这将会变得一团乱麻,特别是当你的模块须要不合的插件的时刻。别的一种方法是将每个模块的设备分隔开,这一策略包管了每个模块之间的互不干扰。这也让你跟踪构建的改变变得轻易,因为你不须要指出哪个改变导致了哪个模块出现缺点等。
gradle的最大年夜策略是混淆。你可以在根目次下定义一个build文件去定义所有模块雷同的熟悉,然后在每个模块中的build文件去设备只属于该模块的参数。Android studio遵守了该原则,其创建了一个build.gradle文件在根目次,然后再每个模块文件夹下创建了别的一个build文件。
模块tasks
当你在你的项目中有多个模块的时刻,你须要在运行义务之前想一想。当你在敕令行界面运行一个task的时刻,gradle将会找到哪个模块将会履行这个义务。举个栗子,当你有个mobile app模块和一个Android Wear模块,你运行了gradlew assembleDebug义务。当你改变个一一个模块的文件夹地位,gradle将只会运行哪个特别的模块,纵使你应用了gradle wrapper在根目次。举个栗子,当你运行../gradlew assembleDebug在Android wear模块的目次下,其只会构建Android wear模块。
切换不呵9依υ?件夹去履行不合的义务会让人很不爽,荣幸的是,我们有其他的办法。你可以预备一个特其余task来履行你的模块。举个栗子,为了只构建Android Wear模块,你仅仅只需在根目次下运行 gradlew :wear:assembleDebug。
建议
为你的项目添加模块
在Android studio中添加新模块是很轻易的一件事,该视图同时也会为你创建build文件。如下图所示:
添加Java依附库
当你新建了一个Java模块,build.grade文件会是如许:
- apply plugin: 'java'
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- }
同样的,我们应用Android studio的图形化界面创建Android模块,然后其构建文件如下:
Java模块应用了Java插件,这意味着很多Android特点在这儿不克不及应用,因为你不须要。
build文件也有根本的库治理,你可以添加jar文件在libs文件夹下。你可以添加更多的依附库,根据第三章的内容。
- dependencies {
- compile project(':javalib')
- }
这告诉了gradle去惹人一个叫做javelin的模块吧,如不雅你为你的app模块添加了这个依附,那么javalib模块将会老是在你的app模块构建之前构建。
添加Android依附库
- apply plugin: 'com.android.library'
记住:Android依附库不仅仅包含了Java代码,同样也会包含Android资本,像manifest和strings,layout文件,在你惹人该模块后,你可以应用该模块的所有类和资本文件。
我有点建议关于多模块项目,并且有些器械你们应当懂得清跋扈,知道这些将会节约你们的时光。
在Android studio中运行模块tasks
当你有多个模块,Android studio会分析出来,并且展示在cradle中:
grade图形化让你运行模块间的义务变得简单,然则其没有为所有模块同时运行一个义务,所以如不雅你欲望这么做,最快的方法是应用敕令行。
加快你的多模块构建
当你构建你的多模块项目,gradle会依次履行所有的模块。当你的电脑内存够大年夜的时刻,让你的构建过程多线程将会更快。该特点在gradle早已存在,然则其默认封闭。
所以如不雅你欲望启动parallel构建,你须要在grade.properties文件中设备如部属性:
- org.gradle.parallel=true
gradle会选择尽可能多的线程去履行你的构建过程,每个线程都邑履行一个模块。parallel履行的是自力的模块,即你的模块是自力的。
模块耦合
即你可以在一个模块中引用其他模块的属性,然则我不建议你们这么做,我们完全可以在根目次下的build文件中定义这些属性。
总结
我们进修了如安在一个项目中构建多个模块,以及添加新模块是若何影响到构建义务的履行。
我们进修了相干事例,并且给出了一些建议。
推荐阅读
天津市南开区应用数字化治理批示中间,经由过程信息技巧将门路信息随时回传,体系根据信息快速分发义务,确保实现15分钟内完成辖区门路污染处理。南开区环卫局数字化治理批示中间采守信息>>>详细阅读
本文标题:Gradle for Android 第五篇( 多模块构建 )
地址:http://www.17bianji.com/lsqh/34776.html
1/2 1