手把手教你在 AGP 8.+ 上发布插件和代码插桩
内容提要
本篇文章介绍了在AGP 8.+上发布插件和代码插桩的方法。首先,需要创建一个插件module,并在libs.versions文件中添加相关依赖。然后,通过创建插件实现类并在脚本中声明插件,让Gradle知道我们定义了一个插件。接下来,介绍了如何将插件发布到Maven库中,包括增加maven-publish插件和定义发布的maven库。最后,讲解了如何使用AGP的新接口进行代码插桩,包括创建插桩实现类和注册插桩。
关键要点
-
本篇文章介绍了在AGP 8.+上发布插件和代码插桩的方法。
-
首先,需要创建一个插件module,并在libs.versions文件中添加相关依赖。
-
通过创建插件实现类并在脚本中声明插件,让Gradle知道我们定义了一个插件。
-
介绍了如何将插件发布到Maven库中,包括增加maven-publish插件和定义发布的maven库。
-
讲解了如何使用AGP的新接口进行代码插桩,包括创建插桩实现类和注册插桩。
-
插件开发需求依靠AGP和ASM库,使用的版本分别是8.3.1和9.6。
-
定义插件的实现类需要继承org.gradle.api.Plugin,范形参数的类型是org.gradle.api.Project。
-
通过java-gradle-plugin插件简化插件标记过程。
-
发布插件到Maven库需要增加maven-publish插件,并定义发布的maven库。
-
定义MavenPublication来描述上传的库,包括groupId、artifactId和version。
-
上传源码文件是可选的,上传后可以让使用者查看源码实现。
-
增加库的依赖信息以避免ClassNotFound异常。
-
在settings.kts中增加本地的maven库房以使用插件。
-
使用AGP的新接口来完成插桩,主要处理Android APP模块。
-
通过project.extensions.getByType获取Android的Extension,遍历变体信息进行插桩。
-
实现自定义的ClassVisitor来处理插桩逻辑,简化了插桩过程。
-
新版AGP插桩接口简化了增量编译和全量编译的处理,使用Kotlin DSL编写Gradle构建脚本更人性化。
延伸问答
如何在AGP 8.+上创建插件模块?
首先需要创建一个插件module,并在libs.versions文件中添加相关依赖。
如何将插件发布到Maven库中?
需要增加maven-publish插件,并在publishing闭包中定义发布的maven库。
AGP的新接口如何进行代码插桩?
使用AGP的新接口创建插桩实现类,并通过project.extensions.getByType获取Android的Extension进行插桩。
在发布插件时,如何定义MavenPublication?
在publishing闭包中创建MavenPublication,设置groupId、artifactId和version等属性。
如何处理插件的依赖信息以避免ClassNotFound异常?
在publishing闭包中增加库的依赖信息,确保在pom.withXml中添加依赖节点。
使用Kotlin DSL编写Gradle构建脚本有什么优势?
Kotlin DSL使得Gradle构建脚本更加人性化,简化了编写过程。