一日一钱,千日一千。绳锯木断,水滴石穿。

Android Studio项目中的Gradle视图内容

Posted on By TinyVampirePudge

Android Studio项目中的Gradle视图内容

使用Android Studio的同学都知道,我们可以方便的在Gradle视图中查看项目中的Task, 双击Task就可以执行它。如下图所示:

那么视图中的元素跟我们的项目都有什么对应关系呢?请往下看。

Gradle视图中的子元素

我们先看下项目的结构,项目中包含三个module: app、mylibrary、myotherlibrary。app是application类型,mylibrary和myotherlibrary是library类型。它们的依赖关系是,app依赖于mylibrary,mylibrary依赖于myotherlibrary。如下图所示。

跟项目结果对应,Gradle视图中的元素也包含了三个module对应的Gradle对象::app、:mylibrary、:myotherlibrary,另外它还有一个root类型的gradle对象——gradleDemo(root)

关于这些信息,我们都可以通过执行gradle命令行来查看。当然了,你可能需要安装gradle,安装去官网即可。如果不想安装的话,用./gradlew提到我使用的gradle命令也可以。

在项目根目录下,执行gradle projects,效果如下所示:

tinytongtongdeMacBook-Pro% gradle projects

> Configure project :

> Configure project :app

> Configure project :mylibrary

> Configure project :myotherlibrary

> Task :projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'gradleDemo'
+--- Project ':app'
+--- Project ':mylibrary'
\--- Project ':myotherlibrary'

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :app:tasks

...

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
tinytongtongdeMacBook-Pro% 

输出结果跟我们的Gradle视图中的内容是对应的。

查看具体的任务信息

在项目根目录下执行gradle tasks --all命令,查看项目的所有task及其信息,结果如下所示:

tinytongtongdeMacBook-Pro% gradle tasks --all
> Configure project :

> Configure project :app

> Configure project :mylibrary

> Configure project :myotherlibrary

> Task :tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Android tasks
-------------
app:androidDependencies - Displays the Android dependencies of the project.
mylibrary:androidDependencies - Displays the Android dependencies of the project.
myotherlibrary:androidDependencies - Displays the Android dependencies of the project.
app:signingReport - Displays the signing info for each variant.
mylibrary:signingReport - Displays the signing info for each variant.
myotherlibrary:signingReport - Displays the signing info for each variant.
...

Build tasks
-----------
app:assemble - Assembles all variants of all applications and secondary packages.
mylibrary:assemble - Assembles all variants of all applications and secondary packages.
myotherlibrary:assemble - Assembles all variants of all applications and secondary packages.
...

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Cleanup tasks
-------------
...

Help tasks
----------
...

Install tasks
-------------
...

Verification tasks
------------------
...

Other tasks
-----------
...

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.0/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
tinytongtongdeMacBook-Pro% 

上图的输出内容,跟Gradle视图中的gradleDemo(root)对象的内容是对应的,如下图所示。你可以自己去核对task细节。另外,上面的输出内容中不仅列出了对应的task名称,还有他们的简介。

如何在命令行中执行Gradle视图中的任务

其实我们刚才在命令行中执行的任务,都是可以在Gradle视图中双击来执行的。如下图所示,分别对应刚才执行的gradle projectsgradle tasks命令。

这里给出说明,Gradle执行任务:gradle task-name

  • gradle clean,是执行清理任务
  • gradle properties,用来查看所有属性信息

所以说,如果你想执行某个Gradle中的Task,你找到它的名字之后,然后打开命令行,进入项目目录,然后执行gradle tasl-name命令,刚才那个task就执行了,是不是逼格满满。

需要说明的是,Gradle视图中的gradleDemo(root)对象,它的内容是子module对应的Gradle对象的并集。你可以自己动手试试。