电商网站模块有哪些,郑州免费网站建设,海外cdn,深圳企业网页设计公司想必做 Android App 开发的对 Gradle 都不太陌生。因为有 Android Studio 的帮助#xff0c;Android 工程师使用 Gradle 的门槛不算太高#xff0c;基本的配置都大同小异。只要在 Android Studio 默认生成的 build.gradle 中稍加修改#xff0c;就都能满足项目要求。但是Android 工程师使用 Gradle 的门槛不算太高基本的配置都大同小异。只要在 Android Studio 默认生成的 build.gradle 中稍加修改就都能满足项目要求。但是深入细致了解 Gradle 的基本知识还是能帮助我们更优雅的实现项目配置工作。
有些场景 gradle 甚至能帮助我们完成一些业务上的需求下面我们就来了解一下 gradle 那些需要掌握的基本知识。
gradle Task
Task任务可以理解为 gradle 的执行单元gradle 通过执行一个个 Task 来完成整个项目构建工作。
自定义 Task
我们可以在 build.gradle 中使用关键字 task 来自定义一个 Task。如下代码所示
task A{println this is task A
}
上面定义了一个简单的 task A然后同步 build.gradle 可以看到下面的打印结果 从结果中可以看出打印日志是在 gradle 的配置阶段执行的。
gradle 的构建生命周期包含三个部分初始化阶段、配置阶段、执行阶段 在 task A 中添加 doFirst 闭包如下所示 执行后打印结果如下所示 gradle 在运行期会执行所有的 Task 配置语句然后执行指定的 Task。
Task 之间可以存在依赖关系
gradle 中的 Task 可以通过 DependsOn 来指定依赖另一个 Task如下所示
在 builid.gradle 中新加了一个 Task B并通过 dependsOn 关键字指定 Task B 依赖于 task A执行 task B结果如下 可以看出我们虽然只是执行的 task B但是因为依赖关系的存在task A 也会被执行。
gradle 会在配置 Configure 阶段确定依赖关系对于 Android 项目来说即为执行各个 module 下的 build.gradle 文件。这样各个 build.gradle 文件中的 task 依赖关系就被确认起来了。而这个依赖关系的确定就是在 Configuration 阶段。
gradle 自定义方法
我们可以在 build.gradle 中使用 def 关键字自定义方法。比如一下代码中自定义了 getData() 方法并在 task 中使用此方法。 执行 my_task结果如下 gradle project
在 android 中每个 module 就对应一个 project。gradle 在编译时期会为每一个 project 创建一个 Project 对象用来构建项目。这一过程是在初始化阶段通过解析 settings.gradle 中的配置来创建相应的 Project。 上图 settings.gradle 中导入了 3个 project但是实际上还会有一个root project。如下所示 我们可以在 root project 中统筹管理子 project。
buildSrc 统筹依赖管理
随着项目越来越大工程中的 module 越来越多依赖的第三方库也越来越多。一般情况下我们会在一个集中的地方统一管理这些三方库的版本。比如谷歌官方推荐的使用 ext 变量。在 root module 下的 build.gradle 中使用 ext 集中声明各种第三方库的版本。如下所示 然后在子 module 中引用这些版本信息 但是这种写法也有一些小瑕疵不支持 AS 的自动补充功能也无法使用代码自动跟踪。因此可以考虑使用 buildSrc。
buildSrc 是 Android 项目中一个比较特殊的 project在 buildSrc 中可以编写 Groovy 语言。但是现在谷歌越来越推荐使用 Kotlin 来编写编译语句。
先在根目录下创建 buildSrc 目录。结果如下 注意这个工程只能有一个并且名字必须为 buildSrc。创建好之后在 buildSrc 中创建 build.gradle.kts 文件并添加 kotlin 插件。 编译工程可能会报错如下所示 只要添加 repositories{jcenter()} 厂库即可。
接下来在 buildSrc 中创建 src/main/java 目录并在此目录下创建 Dependencies.kt名字可以随便取。Dependencies.kt 中创建两个 Object分别用来管理项目中的版本信息和使用的依赖库。 我么可以在 Versions 中添加各种项目中可能引用到的版本 然后在 Deps 中引用 Versions 中的变量 最后我们就可以在 module 中的 build.gradle 中直接使用 Deps 中的变量来声明依赖。比如在 app module 的 build.gradle 中添加如下依赖 下图中使用 buildSrc 前后的对比。并且在使用 Deps 的过程中Studio 会给出自动提示。 总结
本次主要介绍了 gradle 构建中的 Task 和 project。
Task 与大部分开发者的开发是最为紧密的是 gradle 构建的基本单元。每次编译工程时Android studio 会在控制台打印出执行的 task 名称。
project 对应项目中的 module每个 module 中包含一个 build.gradle。每个 build.gradle 都会被 gradle 编译成 Project 字节码。在 build.gradle 中所写的所有逻辑最终都会被映射成此 Project 字节码内的实现逻辑。