Ysj001 / DoKitPluginCompat

解决 DoKit 插件在 AGP 8+ 上无法使用的问题。
Apache License 2.0
12 stars 1 forks source link

集成报错,能帮忙看看是啥问题吗? #2

Closed liuhuan8986 closed 6 months ago

liuhuan8986 commented 6 months ago

Execution failed for task ':fhh:debugBCUTransformTask'.

No signature of method: build_8iur1bi8bqvcck8tj6qd4xens$_run_closure2$_closure25.doCall() is applicable for argument types: (com.ysj.lib.bytecodeutil.plugin.Config, com.android.build.api.variant.impl.ApplicationVariantImpl_Decorated) values: [com.ysj.lib.bytecodeutil.plugin.Config@21ddaf88, com.android.build.api.variant.impl.ApplicationVariantImpl_Decorated@333cc5c2] Possible solutions: doCall(java.lang.Object), findAll(), findAll()

liuhuan8986 commented 6 months ago

我在跟目录的build.gradle 文件里这样配置的
// ================dokitx 配置 start============== // 因为dokitx-plugin插件未兼容gradle 8.0+,但是在dokitx的issues里找到了如下的办法 // BCU 插件依赖 classpath("com.github.Ysj001.BytecodeUtil:plugin:2.1.1") // DoKitPluginCompat 依赖 classpath("com.github.Ysj001:DoKitPluginCompat:3.7.1-v1") // ================dokitx 配置 end==============

在app 目录下的build.gradle配置 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: "kotlin-kapt" apply plugin: "org.jetbrains.kotlin.plugin.parcelize" apply plugin: 'kotlinx-serialization' apply plugin: 'com.huawei.agconnect' //apply plugin: 'com.didi.dokit' //===== dokit 兼容 start ==== apply plugin: "bcu-plugin" // 添加 dokit 兼容插件 apply plugin: "dokit-compat" //===== dokit 兼容 end ====

// 配置 bcu 插件 bcu { config { variant -> loggerLevel = 2 modifiers = arrayOf( // 添加 DoKit 插装兼容实现 Class.forName("com.ysj.lib.dokit.plugin.compat.DoKitTransformCompat"), ) } filterNot { variant, entryName -> // 请按需配置过滤,可大幅提升编译输速度 false } }

dokitExt { //通用设置 comm { //地图经纬度开关 gpsSwitch true //网络开关 networkSwitch true //大图开关 bigImgSwitch true //webView js 抓包 webViewSwitch true } }

liuhuan8986 commented 6 months ago

dokitx 版本是 3.7.1

Ysj001 commented 6 months ago

readme 中的示例是 kts 脚本写的,而你这边的是 groovy 脚本,直接复制过来有语法错误。 下面是 groovy 脚本配置 bcu 的写法:

bcu {
    config { config, variant ->
        config.loggerLevel = 2
        config.modifiers = [
                Class.forName("com.ysj.lib.dokit.plugin.compat.DoKitTransformCompat"),
        ]
    }
    filterNot { variant, entryName ->
        false
    }
}

更详细的可以看 demo:https://github.com/Ysj001/DoKitPluginCompat/blob/main/app/groovy_demo_build.gradle