如果执行一个 Gradle 任务 , 该任务名称比较长 , 如 compileDebugAndroidTestSources 任务 ,
在 buildSrc 模块 中的 src/main/groovy 目录 下 , 创建 MyPlugin.groovy 代码文件 作为插件的主要代码 , 代码如下 :
BaseExtension 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.BaseExtension.html
如果 Gradle 任务 A 的执行 是在 Gradle 任务 B 执行的基础上的 , 那么可以将任务 B 设置为 任务 A 的依赖 ;
Task#dependsOn 函数的作用是为 Gradle 任务设置依赖任务 , 执行该任务前 , 依赖任务必须被满足 ;
参考 android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.Splits.html 文档 ;
ProductFlavor ( build.gradle#android#defaultConfig 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html
添加构建依赖项 参考文档 : https://developer.android.google.cn/studio/build/dependencies
如 : other 分组下的 compileDebugJavaWithJavac 任务 , 该任务的主要作用是 使用 javac 编译器工具 将 Java 源代码文件 编译成 Class 字节码文件 ;
org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
TestOptions ( build.gradle#android#testOptions ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.TestOptions.html
org.gradle.api.Task 配置 ( Gradle 任务类型 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html
Sonatype Nexus 安装目录为 : D:\001_Develop\043_Sonatype_Nexus\nexus-3.27.0-03-win64\nexus-3.27.0-03
Task#finalizedBy 函数 的作用是为 Gradle 任务 设置任务执行完毕后执行的任务 ;
LibraryExtension ( Library 依赖库的 build.gradle#android 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.LibraryExtension.html
在 DefaultTask 中的 任务输出 调用 TaskOutputs#upToDateWhen 方法 , 在传入的闭包参数中 , 返回值为 true 时 , 在编译时遇到该 自定义 Gradle 任务 , 如果 第二次执行 且 输入 / 输出 相同 , 会跳过该任务 , 执行下一个任务 ;
默认情况下 , 在 build.gradle 中配置 com.facebook.fresco:fresco:0.14.0 依赖 ,
分组是在 org.gradle.api.Project 中的 configurations 中配置的 ,
在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 ) 中 , 实现了 自定义插件 的 扩展 Extension , 在 Module 模块下的 build.gradle 构建脚本中 , android 配置块 就是一个 AppExtension 扩展 , 但是在 android 扩展下又定义了 defaultConfig 扩展 , 这是一个 ProductFlavor 配置 ;
UnitTestOptions ( build.gradle#android#testOptions#unitTests ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.TestOptions.UnitTestOptions.html
创建 Gradle 插件 , 一般是在 Android Studio 或者 IntelliJ IDEA 中 , 创建一个插件模块 , 这里以 AS 中为例 ;
参考 Android Gradle 插件内容 , 将 Android Studio 的 Project 面板中的 External Libraries 展开 ,
DexOptions ( build.gradle#android#dexOptions ) 文档位置 : https://google.github.io/android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.DexOptions.html
中 , 直接在 build.gradle 构建脚本 中定义的 扩展属性 , 是为 org.gradle.api.Project 对象定义的扩展属性 ;
org.gradle.api.tasks.bundling.Zip 自带任务 ( 任务类型 ) 文档 :https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html
点击 Android Studio 右侧的 Gradle 面板 , 可以查看该 Android 工程的一系列 Gradle 任务 , 这些 Task 任务都分好了组 , 有如下分组 :
等分组 , 是 Gradle 自带分组 , 自定义的 Gradle 任务 默认放置在 other 分组 中 ;
也可以 通过 project.ext.hello 访问该扩展属性 , 代码如下 :
在之前的 【Android Gradle 插件】自定义 Gradle 插件模块 ⑤ ( 完整总结 ) ★★★ 博客中 , 将自定义 Gradle 插件的 jar 包发布到了本地 Maven 仓库 , 效果如下 : " C:\Users\octop.m2\repository " 目录中的内容如下 :
在 Gradle 面板 中的 自定义 Gradle 插件的 Module 模块 下 , 有 documentation 任务分组 , 其中有
在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 ) 中 , 总结了在 Android Studio 工程中 自定义 Gradle 插件 , 并在 build.gradle 构建脚本 中导入插件的代码 ;
PackagingOptions ( build.gradle#android#packagingOptions ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.PackagingOptions.html
在 buildSrc 中开发了自定义 Gradle 插件 , 编译后在 build/libs 目录下会生成 buildSrc.jar 包 ,
首先 , 在 " build.gradle#android#buildTypes#multiDexEnabled " 处配置 多 dex 机制 启用 ;
领取专属 10元无门槛券
手把手带您无忧上云