Booster 2.0 正式发布,支持 AGP 4.0
Andriod Gradle Plugin 从 3.5
开始进行了一系列的重构,一些原来在 3.5
中的实验方案,在 3.6
版本中开始默认启用,所以,3.6
对于大多数 Gradle 插件来说,简直就是噩梦一样的存在,Booster 的一些模块和特性也受到了影响,如:
- booster-aapt2
- booster-task-compression-cwebp
- booster-task-compression-pngquant
- booster-transform-r-inline
在 Booster 2.0.0
版本中,所有模块和特性已完全支持 Android Gradle Plugin 4.0
,本次更新内容如下:
修复 Booster 在 Android Gradle Plugin
3.5
版本的 bug适配 Android Gradle Plugin
3.6
&4.0
重构
Transformer
和VariantProcessor
的加载Transformer
支持构造方法传递ClassLoader
,该特性主要用于支持除 ASM 和 Javassist 以外的其它字节码框架的集成,如 Apache BCEL :1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class BcelTransformer(val classLoader: ClassLoader) : Transformer {
// 加载自定义 ClassTransformer
private val transformers = ServiceLoader.load(ClassTransformer::class.java, classLoader).sortedBy {
it.javaClass.getAnnotation(Priority::class.java)?.value ?: 0
}
override fun onPreTransform(context: TransformContext) {
this.transformers.forEach { transformer ->
transformer.onPreTransform(context)
}
}
override fun transform(context: TransformContext, bytecode: ByteArray): ByteArray {
TODO()
}
override fun onPostTransform(context: TransformContext) {
this.transformers.forEach { transformer ->
transformer.onPostTransform(context)
}
}
}VariantProcess
支持构造方法传递Project
,例如:1
2
3
4
5
6
7
8
9
10
11
12
class MyVariantProcessor(val project : Project) : VariantProcessor {
init {
// TODO 访问 project 实例
}
override fun process(variant: BaseVariant) {
// TODO
}
}
更多详情,请参考:深入理解 Booster
- 本文链接:https://johnsonlee.io/2020/06/13/booster-v2-0-0-released/
- 版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。