码迷,mamicode.com
首页 > 移动开发 > 详细

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.5——在项目中共享配置

时间:2017-02-06 23:43:28      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:androi   阅读   执行   根目录   技术分享   配置   创建   使用   src   

问题:

取出多个模块下相同的配置

解决方案:

在顶级gradle配置文件里面使用allprojects或者subprojects块

讨论:

当你在android studio中新建android项目时,IDE创建了一个两级的gradle项目,一个配置文件在根目录下,一个在叫app的模块目录下。顶级的build.gradle有几个叫allprojects的块:

技术分享

这个块是gradle的语法,所以不只是在adroid项目中,在所有基于gradle的项目中都能使用。allprojects属性来源于Gradle项目中的类org.gradle.api.Project的属性。这个属性由当前项目和所有子项目的集合组成。另外有一个也叫这个名字的方法,允许你配置当前项目和所有子项目。

PS:在gradle API中年经常有一个属性和方法同名。上下问会判断你使用的哪个。

做法是将闭包参数应用于allprojects集合中的每个项目。也就是说你不需要在子项目(app)中重复repositories块,因为它们已经存在了。

一个可以替代的方式是使用subprojects块。举例说,如果你有多个android库项目,每个都会在build文件应用库插件。如果每个子项目都是类库项目,你通过在上级配置中应用这个插件的方式,去掉重复的配置,如:

技术分享

subprojects返回一个子项目的集合,并且有个叫subprojects的方法对他们使用闭包。

进一步思考:

如果查看allprojects方法的文档你会发现,这个方法使用一个叫org.gradle.api.Action的类做参数。签名如下:

技术分享

文档说这个方法对当前项目和所有子项目执行给定的Action。Action<T>是一个只有一个参数的叫做execute的简单方法。这好像暗示你要创建一个实现Action接口的类,实例化它,并且将结构作为参数。在1.8以前的java,这经常用作匿名内部类。

在Groovy中,你可以简单的使用闭包作为参数来实现单方法的接口。闭包会成为方法实现。Gradle对allprojects和subprojects方法的实现,是将闭包参数应用于每个项目。

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.5——在项目中共享配置

标签:androi   阅读   执行   根目录   技术分享   配置   创建   使用   src   

原文地址:http://www.cnblogs.com/tootwo2/p/6372112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!