Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用下令行创建Gradl ...

天空闲话  金牌会员 | 2024-6-29 07:29:09 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 537|帖子 537|积分 1611

1. 媒介

前文中,我们先容了在Android中,怎样基于Gradle 8.2,创建Gradle插件。这篇文章,我们以buildSrc的方式来创建Gradle插件。别的,还先容一种用Cmd下令行的方式,来创建独立的Gradle插件的方式。
1.1 本文情况



  • Android Studio 版本 : Android Studio Iguana | 2023.2.1
  • Gralde版本 : gradle 8.4
2. buildSrc插件

buildSrc是一个特殊的源代码集,通常用于存放项目内部使用的自定义Gradle插件和任务。它的主要优势在于它会自动被Gradle识别并编译,然后Android Studio自动会将其添加到构建脚本的classpath中,因此无需手动添加或配置。这使得在项目的多个模块之间共享构建逻辑变得非常方便。别的,由于buildSrc是项目的一部分,因此它可以直接访问和使用项目中的其他代码和资源。
   不消把buildSrc看成一个特别希奇的东西,这个玩意儿就是个平凡的java项目,它运行完后,会生成一个jar包 (buildSrc/build/libs/buildSrc.jar),然后它会自动添加到整个项目的build.gradle.kts脚本的classpath内里。
  2.1 buildSrc插件和独立Gradle插件的区别

相比之下,单独的Gradle插件通常作为独立的项目来开发,并通过二进制形式(如jar包)发布到堆栈中,供其他项目使用。这种插件通常具有更广泛的适用性,因为它们计划用于多个项目之间的复用。然而,开发这种插件必要更多的配置和发布步骤,而且它们不会直接访问到使用它们的项目的内部代码和资源。
2.2 新建buildSrc目次

在项目的根目次下,新建buildSrc文件夹,并添加如下的项目结构

buildSrc目次下的build.gradle中写下如下的内容
  1. plugins {
  2.     id 'java-gradle-plugin'
  3. }
  4. gradlePlugin {
  5.     plugins {
  6.         greeting {
  7.             id = 'com.heiko.buildsrc.plugin' //这里是插件的ID
  8.             implementationClass = 'com.heiko.buildsrc.MyPlugin' //这里是包名+类名
  9.         }
  10.     }
  11. }
复制代码
这里必要留意
Plugin用java语言编写,那么包名的上一级为java文件夹,plugin用java-gradle-plugin
  1. plugins {
  2.     id 'java-gradle-plugin'
  3. }
复制代码
Plugin用groovy语言编写,那么包名的上一级为groovy文件夹plugin用groovy
  1. plugins {
  2.         id 'groovy'
  3. }
复制代码
Plugin用kotlin语言编写,那么包名的上一级为kotlin文件夹,plugin用org.gradle.kotlin.kotlin-dsl
  1. plugins {
  2.         id("org.gradle.kotlin.kotlin-dsl") version "4.1.2"
  3. }
  4. 使用 kotlin-dsl 插件的时候,需要mavenCentral仓库
  5. repositories {
  6.     mavenCentral()
  7. }
复制代码
2.3 依赖插件

我们Sync下项目,Android Studio自动会将其添加到构建脚本的classpath中。
接着我们只必要在app的build.gradle中,去应用这个插件就可以使用了。
  1. plugins {
  2.     //省略了其他插件...
  3.    
  4.     //应用我们自定义的com.heiko.buildsrc.plugin插件
  5.     id("com.heiko.buildsrc.plugin") apply true
  6. }
复制代码
2.4 查看日记

再次Sync下项目,可以看到如下日记,就表明我们配置buildSrc插件成功了 !
  1. //...省略了其他日志 ...
  2. > Configure project :app
  3. 这是我的第一个Gradle插件:MyPlugin.apply!
  4. > Task :prepareKotlinBuildScriptModel UP-TO-DATE
  5. greeting config
  6. //...省略了其他日志 ...
  7. BUILD SUCCESSFUL in 14s
  8. 4 actionable tasks: 2 executed, 2 up-to-date
复制代码
3.使用build.gradle.kts来新建buildSrc插件

使用build.gradle.kts和使用build.gradle根本是一样的,只必要将build.gradle修改为build.gradle.kts,然后将内里的代码从Groovy修改为Kotlin即可
  1. plugins {
  2.     //Plugin用Java语言编写时需添加
  3.     `java-gradle-plugin` //等同于 id("java-gradle-plugin") apply true
  4.     //Plugin用Groovy语言编写时需添加
  5.     `groovy` //等同于 id("groovy") apply true
  6.     //Plugin用Kotlin语言编写时需添加
  7.     `kotlin-dsl` //等同于 id("org.gradle.kotlin.kotlin-dsl") version "4.1.2"
  8.     // 也可以用 id("org.jetbrains.kotlin.jvm") version "1.9.10" apply true (不建议,这个只有Kotlin的语法,而没有Kotlin DSL的语法)
  9. }
  10. //使用 kotlin-dsl / org.jetbrains.kotlin.jvm 的时候,需要mavenCentral仓库
  11. repositories {
  12.     mavenCentral()
  13. }
  14. gradlePlugin {
  15.     plugins {
  16.         create("greeting") {
  17.             id = "com.heiko.buildsrc.plugin"
  18.             //Java插件主类
  19.             //implementationClass = "com.heiko.buildsrc.MyPlugin"
  20.             //Groovy插件主类
  21.             //implementationClass = "com.heiko.buildsrc.MyPluginGroovy"
  22.             //Kotlin插件主类
  23.             implementationClass = "com.heiko.buildsrc.MyPluginKotlin"
  24.         }
  25.     }
  26. }
复制代码
4. 更方便的新建插件的方式 : 下令行

除了在Android Studio中手动新建插件,我们还可以通过下令行来新建插件。
4.1 新建文件夹

首先必要新建一个文件夹,在文件夹里复制好如下内容,gralde文件夹、gradlew、gradlew.bat,这三个直接从一个现成的Android项目中复制过来就行。

4.2 运行下令行

打开cmd,进入该文件夹,然后实验如下下令,下述下令选其一即可。
4.2.1 创建使用Java的插件

  1. gradlew init --type java-gradle-plugin
复制代码
4.2.2 创建使用Groovy的插件

  1. gradlew init --type groovy-gradle-plugin
复制代码
4.2.3 创建使用Kotlin的插件

  1. gradlew init --type kotlin-gradle-plugin
复制代码
4.3 完成选项

实验下令后,会有几个问题选项,我们按需举行选择,终极看到BUILD SUCCESSFUL,就表现新建插件成功了

生成后的文件如下

如许子就很快的完成了一个Gradle独立插件的新建了。
5. Android Gradle系列文章

Android Gradle 开发与应用 (一) : Gradle根本-氦客-CSDN博客
Android Gradle开发与应用 (二) : Groovy根本语法-CSDN博客
Android Gradle开发与应用 (三) : Groovy语法概念与闭包-CSDN博客
Android Gradle开发与应用 (四) : Gradle构建与生命周期-CSDN博客
Android Gradle开发与应用 (五): 基于Gradle 8.2,创建Gradle插件-CSDN博客
Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用下令行创建Gradle插件-CSDN博客
6. 参考文章

Using Plugins (gradle.org)
Gradle用户手册 - Gradle8.1.1中文文档 - API参考文档 - 全栈行动派 (qzxdp.cn)
编写 Gradle 插件 | Android Studio | Android Developers (google.cn)
Android Gradle8.0版本新建Gradle插件 - 掘金 (juejin.cn)
Gradle根本到进阶 - yechaoa的专栏 - 掘金 (juejin.cn)
【Gradle-8】Gradle插件开发指南 - 掘金 (juejin.cn)
【Gradle-9】Gradle插件发布指南 - 掘金 (juejin.cn)
Gradle自定义插件实践与总结 - 掘金 (juejin.cn)
创建Gradle插件记录 - 掘金 (juejin.cn)
配置 build | Android Studio | Android Developers (google.cn)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表