如果传递依赖的类库在 APP 中已经存在,而且跟 APP 依赖的类库版本不一致,那我们该怎么办呢?如果是这样的话,前面的方法就不太容易实现了,有没有更简单的办法呢?当然有,这就是设计 VariantProcessor 的初衷,让大规模的字节码注入变得更容易。

首先,我们来回顾一下 ClassTransformer 与 VariantProcessor 各自的职责:

VariantProcessor 主要负责除操作字节码以外的其它工作,比如:创建 Task,访问构建中间产物,等等。

为什么要这么设计呢?主要是两方面的考虑:

一方面,便于单元测试,另一方面,可以在非 Gradle 工程中复用 ClassTransformer

相信很多 Android 开发者有遇到动态库加载失败的情况,例如:

我们可以使用 ReLinkeropen in new window 来避免这种崩溃的发生,如何使用 Booster 来完成对 ReLinkeropen in new window 的注入呢?这个问题就留给本书的读者吧。