Shadow
Shadow copied to clipboard
插件运行异常:ClassCastException com.tencent.shadow.sample.host.HostApplication to com.tencent.shadow.core.runtime.ShadowApplication
你好大佬,插件内部有Hook系统ContextImpl这些逻辑,在成功编译后,启动插件时报上述的ClassCastException,我传入的参数也是插件内的UseCaseApplication,UseCaseApplication是ShadowApplication的子类呢。
想问的有
- 导致类型转换异常的原因是
context instanceof ContextWrapper
递归向上查找ContextImpl,导致下面的mApplication拿到了宿主的Application类型吗? - 使用useHostContext可以规避这个问题吗?
- Hook相关的源码我可以修改,在Shadow Transform这块有修改的思路吗?
相关日志如下:
base:com.tencent.shadow.sample.host.HostApplication@c3a13d9, getApplicationContext:com.tencent.shadow.sample.plugin.app.lib.UseCaseApplication@7312f59
2023-08-11 18:24:59.239 24598-24598 AndroidRuntime com...hadow.sample.host E FATAL EXCEPTION: main Process: com.tencent.shadow.sample.host:plugin, PID: 24598 java.lang.ClassCastException: Couldn't convert result of type com.tencent.shadow.sample.host.HostApplication to com.tencent.shadow.core.runtime.ShadowApplication at $Proxy7.mApplication(Unknown Source) at com.dofun.vbox.client.fixer.ContextFixer.fixContext(ContextFixer.java:44) at com.tencent.shadow.sample.plugin.app.lib.UseCaseApplication.attachBaseContext(UseCaseApplication.java:41) at com.tencent.shadow.core.loader.ShadowPluginLoader.callApplicationOnCreate$realAction(ShadowPluginLoader.kt:120) at com.tencent.shadow.core.loader.ShadowPluginLoader.access$callApplicationOnCreate$realAction(ShadowPluginLoader.kt:43) at com.tencent.shadow.core.loader.ShadowPluginLoader$callApplicationOnCreate$1.run(ShadowPluginLoader.kt:132) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:223) at android.os.Looper.loop(Looper.java:324) at android.app.ActivityThread.main(ActivityThread.java:8496) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:582) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1059)
提前拜谢 Thanks♪(・ω・)ノ
附问题复现demo : 地址: https://github.com/cocomikes/Shadow/tree/issue-ClassCastException-ShadowApplication