由于 DoKit 插件在官方并不兼容 AGP8+,因此如果你想在高版本的 AGP 上使用 DoKit 可以使用本项目的兼容插件包。兼容插件包中对字节码的修改基于 BCU 的 IModifier 接口,通过该接口的实现类来代理并驱动 DoKit 插件中的所有 Transformer 进而兼容原 Dokit 插件的功能。
本兼容包的主版本和 DoKit 保持一致便于理解和使用,例子:
- 官方插件依赖:io.github.didi.dokit:dokitx-plugin:3.7.1
- 兼容插件依赖:com.github.Ysj001:DoKitPluginCompat:3.7.1-v1
注意!不要同时使用兼容插件和官方插件
如果你要编译本项目,可了解如下工程结构
app用于演示buildSrc管理 maven 发布和版本控制项目统一配置repos本地 maven 仓库,便于开发时调试dokit_plugin_compat本项目核心实现
在编译本项目前请先在根目录下执行 gradlew publishAllPublicationsToLocalRepository 然后重新 sync。
-
推荐使用下面所示的最新版本:
-
在项目的根
build.gradle.kts中配置如下// Top-level build file buildscript { repositories { maven { setUrl("https://jitpack.io") } } dependencies { // BCU 插件依赖 classpath("com.github.Ysj001.BytecodeUtil:plugin:<lastest-version>") // DoKitPluginCompat 依赖 classpath("com.github.Ysj001:DoKitPluginCompat:<lastest-version>") } } subprojects { repositories { maven { url 'https://jitpack.io' } } }
-
在
app模块的build.gradle.kts中的配置如下plugins { id("com.android.application") id("org.jetbrains.kotlin.android") // 添加 bcu 插件 id("bcu-plugin") // 添加 dokit 兼容插件 id("dokit-compat") } // 配置 bcu 插件 bcu { config { variant -> loggerLevel = 2 modifiers = arrayOf( // 添加 DoKit 插装兼容实现 Class.forName("com.ysj.lib.dokit.plugin.compat.DoKitTransformCompat"), ) } filterNot { variant, entryName -> // 请按需配置过滤,可大幅提升编译输速度 false } } // 配置 dokit // 详见:https://xingyun.xiaojukeji.com/docs/dokit/#/androidGuide dokitExt { comm { // ... } slowMethod { // ... } }
- 如果本项目对你有所帮助,欢迎 start。
- 如果有问题或 bug 欢迎提 issues 给我。