能不能查看到某个task的源码?

来源:9-4 构建速度优化

慕妹8319097

2021-10-02

比如我们执行任务:app:assembleDebug怎么查看,有什么参数?
毕竟老师的课程是能让我们了解一些参数和功能作用。
比如:app:assembleDebug任务,其他的参数的了解和学习,该从哪里下手?

写回答

1回答

allenfeng

2021-10-10

你好!

除非是需要做编译优化等较为深层的构建逻辑定制或者是比较感兴趣内部实现,我们一般不需要直接查看Task的源码。

对于构建逻辑的定制,通常是通过修改Android Gradle Plugin的DSL参数来实现,DSL文档可以参考:https://developer.android.google.cn/reference/tools/gradle-api?hl=zh-cn。


如果确实需要查看源码,可以通过下面方法:

  1. 首先,在自己工程中的buildSrc工程或者其他模块工程中,引用Android Gradle Plugin:

    如 implementation 'com.android.tools.build:gradle:7.0.2',然后gradle sync。这样就不用手动下载源码了,当然你也可以去 https://android.googlesource.com/platform/tools/base/+/studio-master-dev/build-system/README.md 自行下载。

  2. 然后,在app的build.gradle中编写一段代码,找到assembleDebug任务对应的真正类名。比如:
    project.tasks.findAll {    // 此处以 javac 任务为例,具体需根据任务名称修改匹配规则    task -> task.name.startsWith(‘assemble)}.each {    task ->        println("task name = ${task.name}, task.class = {task.class}")}

 3. 最后通过Ctrl+O快捷键,搜索打印出来的:app:assembleDebug对应的类名,就可以查看对应Task的源代码了。




0
0

Android 应用程序构建实战+原理精讲

深度掌握 Gradle 使用,系统性学习 Android 应用构建知识

450 学习 · 116 问题

查看课程