| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android之Gradle构建生命周期 -> 正文阅读 |
|
[移动开发]Android之Gradle构建生命周期 |
Gradle进行构建,都经过3个生命周期阶段:
Gradle提供了很多生命周期监听方法,可以在各阶段Hook指定的任务; 1.ProjectProject提供的生命周期回调方法有 //在Project进行配置前调用 void beforeEvaluate(Closure var1); //在Project配置结束后调用 void afterEvaluate(Closure var1); beforeEvaluate必须在父模块的build.gradle对子模块进行配置才能生效,因为在当前模块的build.gradle中配置,它自己本身都没配置好,所以不会监听到; 我们用个例子来验证下结果,工程结构如下图所示: ?setting.gradle代码: include ':app' rootProject.name = "FloatWindowL" FloatWindowL/build.gradle代码: //对子模块进行配置 subprojects { sub -> sub.beforeEvaluate { project -> println "${project.name}子项目beforeEvaluate回调..." } } println "根项目配置开始---" task rootTest { println "根项目里任务配置---" doLast { println "执行根项目任务..." } } println "根项目配置结束---" FloatWindowL/app/build.gradle代码: println "APP sub project config start---" afterEvaluate { println "APP sub project afterEvaluate callback..." } task appTest { println "APP sub project task config---" doLast { println "execution sub project task..." } } println "APP sub project config end---" 在根目录执行:gradle -q,结果如下:
2.GradleGradle提供的生命周期回调方法很多,部分与Project里的功能类似:
我们修改gradle的代码如下: include ':app' rootProject.name = "FloatWindowL" //在初始化前就已经调用了buildStarted方法,所以在初始化阶段无法回调到 gradle.buildStarted { println('init Before bulidStarted......') } //1.初始化阶段 gradle.settingsEvaluated { println('init settingsEvaluated') } gradle.projectsLoaded { println('init projectsLoaded') } //2.配置阶段 gradle.beforeProject {project -> ????????println "${project.name} config beforeProject --- in settings.gradle" } gradle.afterProject{ project -> println "${project.name} config afterProject" } gradle.projectsEvaluated { println 'config projectsEvaluated' } // 4.build结束 gradle.buildFinished { println 'buildEnd buildFinished' } 这个时候的执行结果如下:
可以看到 gradle.beforeProject 与 project.beforeEvaluate 是类似的,同样 afterProject 与 afterEvaluate 也是类似的。 除此之外,Gradle 还有一个通用的设置生命周期监听器的方法:addListener ?上面的 BuildListener、ProjectEvaluationListener 等与前面的部分 API 功能是一致的,这里不再赘述了。 3. TaskExecutionGraph(Task执行图)Gradle 在配置完成后,会对所有的 task 生成一个有向无环图,这里叫做 task 执行图,他们决定了 task 的执行顺序等。同样,Gradle 可以对 task 的执行生命周期进行监听。
通过 gradle.getTaskGraph() 方法来获取 task 执行图: FloatWindowL/app/bulid.gradle
4. 小结生命周期回调的执行顺序(粗体为生命周期方法):
Gradle构建周期的Hook点 参考: |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:24:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |