在 Android Studio
中经常点击“RUN”按钮,即可对编写的代码进行编译、打包,安装到目标设备,并运行 APP,那么这一条龙服务具体是谁在帮我们做?当点击 RUN 之后会运行一系列 task,这些 Task 有什么关系又是怎么来的呢,今天就基于这些问题来聊聊一些本质问题。
实际上 Android Studio 提供了Gradle
这个工具,它可以为我们提供一条龙服务。这些按钮的底层实现都是通过 Gradle task 来完成的,当点击Run的时候我们看到控制台会有一系列的task在运行。如果针对 Gradle 不了解的可以参考这篇文章 [Gradle系列之大锅菜汇总]
实际上我们在点击 Run 的时候运行的是gradle assembleDebug
任务,会生成一个 Debug 包,当我们连接手机的时候会自动帮我们安装到手机上,并打开 Main Activity
。
如果想知道 Task 之间是怎么运行的,这就涉及到 Gradle 的调度顺序。在此之前需要了解的是 Gradle 中两个重要的概念:Projects 和 Tasks。
在 Gradle 中每个待编译的工程称为 Project,每个 Project 在构建时都包含一系列的 Task,而每个 Task 代表了构建过程中的一个原子性操作,比如编译、打包、发布等这些操作。一个 Project 到底包含了多少个 Task,其实是由编译脚本指定的插件决定的。
主要用于指定项目中所有引入的模块。一个子工程只有在 settings.gradle 文件里配置了,Gradle 才会识别,才会在构建的时候被包含进去。
我们会发现根项目下有一个 build.gradle,子项目中也有一个 build.gradle。最外面的 build.gradle,表示的是全局的配置文件,可以对所有的子模块进行配置;
buildscript {
repositories {
jcenter()
maven {g
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.8"
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
而内部的 build.gradle 文件是针对当前子模块进行配置。
常见的子模块中的 build.gradle 配置如下:
android闭包:可以配置项目构建的各种属性
compileSdk 33 用于指定项目的编译版本,假如指定33表示使用Android12系统的SDK编译
defaultConfig闭包:主要对项目的更多细节进行配置
buildTypes闭包:用于指定生成安装文件的相关配置,通常包含有个闭包,release和debug,debug可省略,通过Android Studio直接运行项目生成的都是测试版安装文件
可以概括为三个阶段:
总结就是先执行 settings 内容,再执行 build.gradle 中除了 doLast 闭包之外的内容,最后再执行 doLast 闭包。如果想验证的话,可以在三个文件中分别加入打印信息
❤️如果你想了解更多Gradle 的内容,可以参考这个专栏,一定有你想要的信息。 [Gradle系列之大锅菜汇总]❤️
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。