学习gradle过程碰到了几个问题,求高手解惑:
gradle的执行顺序是怎么样规定的?Project,app下各有一个build.gradle,谁先执行呢?
上图是别人代码的结构,这个QA既不是application也不是library,settings.gradle里也没有出现QA,但是构建的时候quality.gradle却执行了,为什么会这样呢?
3.gradle里的钩子是什么意思?比如check,clean等task。我的理解是钩子类似android里的回调,当gradle编译执行到check,clean时,会检查你有没有重写这两个task,如果重写了,就执行你编写的脚本。不知道这样理解对不对。
4.def是定义属性,ext是定义属性。这两个的区别在哪里?有没有API可查呢?
万分感谢
问题1
gradle的解析顺序:rootproject 的setting.gradle,然后是rootproject的build.gradle,然后是各个subproject。所以project下的build.gradle会先于app下的build.gradle。
问题2
在build.gradle中,我们可以通过apply plugin: 引入插件,也可以通过 apply from .gradle引入其他gradle脚本中的函数定义或task等
问题3
你说的check,clean实际是task,一般hook我们指的是gradle的生命周期:
问题4
gradle基于的语言是groovy,也是一个编程框架:
官方文档:https://docs.gradle.org/current/dsl/
Android插件文档:https://github.com/google/android-gradle...
最后你应该从编程的角度来看gradle,通过查阅文档解决问题:http://m.blog.csdn.net/article/details?i...