作家
登录

Gradle for Android 第五篇( 多模块构建 )

作者: 来源: 2017-04-14 09:18:19 阅读 我要评论

构建生命周期

懂得了构建过程让你懂得多模块的构建变得轻易。我们很早前谈过关于构建的生命周期。所以如今你应当知道其根本的过程,然则一些很重要的细节可能你并不是很清跋扈。

一旦你懂得了构建义务是若何将所有的模块聚合在一路的时刻,那关于几种不合的构建多模块策略就会变得简单易懂。你可以设备所有的模块在根目次下的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文件会是如许:

  1. apply plugin: 'java' 
  2.    dependencies { 
  3.        compile fileTree(dir: 'libs', include: ['*.jar']) 
  4.  

同样的,我们应用Android studio的图形化界面创建Android模块,然后其构建文件如下:

Java模块应用了Java插件,这意味着很多Android特点在这儿不克不及应用,因为你不须要。

build文件也有根本的库治理,你可以添加jar文件在libs文件夹下。你可以添加更多的依附库,根据第三章的内容。

  1. dependencies { 
  2.  
  3.   compile project(':javalib'
  4.  
  5.  

这告诉了gradle去惹人一个叫做javelin的模块吧,如不雅你为你的app模块添加了这个依附,那么javalib模块将会老是在你的app模块构建之前构建。

添加Android依附库

  1. apply plugin: 'com.android.library' 

记住:Android依附库不仅仅包含了Java代码,同样也会包含Android资本,像manifest和strings,layout文件,在你惹人该模块后,你可以应用该模块的所有类和资本文件。

我有点建议关于多模块项目,并且有些器械你们应当懂得清跋扈,知道这些将会节约你们的时光。

在Android studio中运行模块tasks

当你有多个模块,Android studio会分析出来,并且展示在cradle中:

grade图形化让你运行模块间的义务变得简单,然则其没有为所有模块同时运行一个义务,所以如不雅你欲望这么做,最快的方法是应用敕令行。

加快你的多模块构建

当你构建你的多模块项目,gradle会依次履行所有的模块。当你的电脑内存够大年夜的时刻,让你的构建过程多线程将会更快。该特点在gradle早已存在,然则其默认封闭。

所以如不雅你欲望启动parallel构建,你须要在grade.properties文件中设备如部属性:

  1. org.gradle.parallel=true 

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

模块耦合

即你可以在一个模块中引用其他模块的属性,然则我不建议你们这么做,我们完全可以在根目次下的build文件中定义这些属性。

总结

我们进修了如安在一个项目中构建多个模块,以及添加新模块是若何影响到构建义务的履行。

我们进修了相干事例,并且给出了一些建议。


  推荐阅读

  “千里眼”助力天津南开区数字化环卫

天津市南开区应用数字化治理批示中间,经由过程信息技巧将门路信息随时回传,体系根据信息快速分发义务,确保实现15分钟内完成辖区门路污染处理。南开区环卫局数字化治理批示中间采守信息>>>详细阅读


本文标题:Gradle for Android 第五篇( 多模块构建 )

地址:http://www.17bianji.com/lsqh/34776.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)