Eric's Studio

ARTS058

Word count: 422Reading time: 1 min
2022/05/03

Gradle 真是够复杂的。

A.R.T.S 058

Algorithm

ignore

Review

Using Gradle Plugins

Developing Custom Gradle Plugins

Using Gradle Plugins

升级 AGP,遇到 AppJointPlugin 和 AGP:4.2.0 不兼容的问题,fork 修改了一下, 想发布到 jitpack 上使用。Plugin publish 的过程中遇到一些问题。研究了一下 Gradle Plugin 的开发姿势。

想要使用 Composite Build 隔离 Plugin 的构建过程,踩了很多坑,都是对 Gradle 的机制不熟悉导致的。

How to use Composite builds as a replacement of buildSrc in Gradle

Gradle Plugins and Composite Builds

Tips

https://github.com/gradle/gradle/issues/18570

不要太激进的升级你的 Gradle,Gradle 7 编译出来的 Plugin 没法在 Gradle 6 上运行。报错 AbstractMethodError。要不是搜索了一下,又要在这里浪费整个下午了。

Gradle 的 Composing Build 在 6.x 版本上的支持不太行,./gradlew projects 在 Gradle 7 上才能展示 includeBuild 的 Project。

Gradle 6 上不能直接通过 ./gradlew :includedProj:tasks 调用对应的任务

Gradle 6 上通过以下方式 Apply Plugin,会导致 AppJoint Plugin 在 Project 中寻找已经注册的 android plugin 的时候报错,看起来这个时候 application plugin 是没有 apply 的,特别奇怪,只能回退到之前的 apply plugin 的写法。

1
2
3
4
plugins {
id "com.android.application"
id "app-joint"
}

总之,感觉新的 Gradle DSL 还有很多需要完善的地方,要玩转新的 Gradle,阅读官方文档是必不可少的。

ComposingBuild 用来开发 GradlePlugin 真好用,在带 Demo 的项目中,直接用 project substitude 对应的 Plugin,避免 Gradle 初始化项目的时候遇到 apply plugin 但是 plugin 又需要 build 完项目之后才能生成的问题。

算是鸡生蛋蛋生鸡的一个解决方案了。

Share

ignore

CATALOG
  1. 1. A.R.T.S 058
  2. 2. Algorithm
  3. 3. Review
  4. 4. Tips
  5. 5. Share