Ysj001 / DoKitPluginCompat

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

groovy/kts 导致的编译不通过问题 #5

Open Ysj001 opened 4 months ago

Ysj001 commented 4 months ago

不要在本 Issues 中提新的问题,有新问题 new issue

README中提供了kts语法和groovy语法两个版本的例子,大家提问前麻烦先看一下文档,编译不过大多都是因为使用的groovy脚本但是复制粘贴的README中kts的语法!

下面是 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

showwiki commented 4 months ago

请问一下 执行appHexaDebugBCUAppendTask 的时候 ,提示bugly 中的类已经存在怎么处理?

Task :app:appHexaDebugBCUAppendTask

BCU append input ---> /Users/feng/project/superhexa/kunmingDevMerge/kunming/app/build/bcu/appHexaDebugBCUTransformTaskNotNeed BCU append output ---> /Users/feng/project/superhexa/kunmingDevMerge/kunming/app/build/intermediates/classes/appHexaDebug BCU append isIncremental ---> false BCU append removed group:0 , size:0 BCU append modified group:0 , size:0 BCU append added group:315 , size:31435

Task :app:appHexaDebugBCUAppendTask FAILED Execution failed for task ':app:appHexaDebugBCUAppendTask'. There were multiple failures while executing work items A failure occurred while executing com.ysj.lib.bytecodeutil.plugin.AppendTask$Action /Users/feng/project/superhexa/kunmingDevMerge/kunming/app/build/bcu/appHexaDebugBCUTransformTaskNotNeed/com/tencent/bugly/proguard/A.class-crc865da686 -> /Users/feng/project/superhexa/kunmingDevMerge/kunming/app/build/intermediates/classes/appHexaDebug/com/tencent/bugly/proguard/A.class: The destination file already exists. A failure occurred while executing com.ysj.lib.bytecodeutil.plugin.AppendTask$Action /Users/feng/project/superhexa/kunmingDevMerge/kunming/app/build/bcu/appHexaDebugBCUTransformTaskNotNeed/com/tencent/bugly/proguard/i.class-crc6efb4163 -> /Users/feng/project/superhexa/kunmingDevMerge/kunming/app/build/intermediates/classes/appHexaDebug/com/tencent/bugly/proguard/i.class: The destination file already exists.

showwiki commented 4 months ago

我注掉bugly 相关代码,就可以了,可能是bugly 中有类似的字节码修改逻辑,提前一步生成需要的类了

zzspuck commented 3 weeks ago

请问 这种需要升级 ASM 版本的该如何处理 PermittedSubclasses requires ASM9 Caused by: java.lang.UnsupportedOperationException: PermittedSubclasses requires ASM9 at org.objectweb.asm.ClassVisitor.visitPermittedSubclass(ClassVisitor.java:266) at org.objectweb.asm.ClassReader.accept(ClassReader.java:706) at org.objectweb.asm.ClassReader.accept(ClassReader.java:424) at com.android.build.gradle.internal.instrumentation.AsmInstrumentationManager.doInstrumentByteCode(AsmInstrumentationManager.kt:225) at com.android.build.gradle.internal.instrumentation.AsmInstrumentationManager.doInstrumentClass(AsmInstrumentationManager.kt:257) ... 255 more

Ysj001 commented 3 weeks ago

AGP8+ 和 BUC 内部依赖了 ASM9,因此通常不需要去显式依赖,你可以检查下你的工程是否有依赖其他版本的 ASM 然后改到 9.2 版本

zzspuck commented 3 weeks ago

我将其他使用ASM的插件注销掉后 又报文件已经存在 Execution failed for task ':app:onLineDebugBCUAppendTask'.

There were multiple failures while executing work items A failure occurred while executing com.ysj.lib.bytecodeutil.plugin.AppendTask$Action E:\love8\app\build\bcu\onLineDebugBCUTransformTaskNotNeed\com\pgl\ssdk\A.class-crcbe86767a -> E:\love8\app\build\intermediates\classes\onLineDebug\onLineDebugBCUAppendTask\com\pgl\ssdk\A.class: The destination file already exists. A failure occurred while executing com.ysj.lib.bytecodeutil.plugin.AppendTask$Action E:\love8\app\build\bcu\onLineDebugBCUTransformTaskNotNeed\com\pgl\ssdk\E.class-crcaf6f66c4 -> E:\love8\app\build\intermediates\classes\onLineDebug\onLineDebugBCUAppendTask\com\pgl\ssdk\E.class: The destination file already exists.

Ysj001 commented 3 weeks ago

clean 后重新编译,如果还不行就检查这个类是不是在源码和依赖中都有