Shadow icon indicating copy to clipboard operation
Shadow copied to clipboard

插件activity继承宿主的baseActivity

Open chenlin139 opened this issue 3 years ago • 1 comments

项目把部分页面拆分成插件,由于要共用宿主的功能,插件activity继承了宿主module中的baseActivity,但是报错 Caused by: java.lang.RuntimeException: java.lang.ClassCastException: com.example.testplugin.MainActivity cannot be cast to com.tencent.shadow.core.runtime.ShadowActivity at com.tencent.shadow.core.loader.delegates.ShadowActivityDelegate.onCreate(Unknown Source:361) at com.tencent.shadow.core.runtime.container.PluginContainerActivity.onCreate(PluginContainerActivity.java:84) at android.app.Activity.performCreate(Activity.java:7894) at android.app.Activity.performCreate(Activity.java:7883) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1353) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3655) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3835)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2291)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:230)  at android.app.ActivityThread.main(ActivityThread.java:8024)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:526)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034) 

chenlin139 avatar Jun 02 '22 01:06 chenlin139

插件用的activity、service都是经过处理的,被替换成了插件的ShadowActivity、ShadowService。所以要把这个baseactivity单独给插件提供一份,让插件打包的时候替换成插件能识别的。

Daimhim avatar Jun 02 '22 02:06 Daimhim

这种用法和Shadow的设计相违背,或者说有这种需求在插件化选型上就不应该选型Shadow

heweimxcz avatar Nov 09 '22 06:11 heweimxcz

Shadow的设计是免安装的,插件有自己独立的运行环境,包括所有依赖

heweimxcz avatar Nov 09 '22 06:11 heweimxcz

插件用的activity、service都是经过处理的,被替换成了插件的ShadowActivity、ShadowService。所以要把这个baseactivity单独给插件提供一份,让插件打包的时候替换成插件能识别的。

你好,这种问题我也遇到了。能麻烦说一下具体解决方法吗?感谢感谢!

SunshineRoc avatar Nov 28 '22 07:11 SunshineRoc