宿主实例化插件的对象,无法转换
插件和宿主在同一个进程,宿主与插件共同拥有一个基类BaseFragment,宿主通过ARouter实例化插件的Fragment。在宿主无法在强转为BaseFragment。请问一下这种场景需要什么条件
代码大概这样

在宿主无法在强转为BaseFragment。
怎么无法?缺少关键信息。
想在宿主使用插件的fragment,怎么实例化,目前使用的ARouter直接实例化,提示验证报错

我这边是打算把fragment实例化出来,然后手动调用其中的生命周期方法,类似代理的方式 ,达到使用fragment的目的 宿主加载壳子,壳子再去实例化插件的fragment

你遇到的Crash跟fragment没有关系,是那个fragment类中引用的activity类型所致的。
除此之外,宿主使用插件fragment还需要在资源上在宿主和插件中二选一。因为fragment只能和其attach的activity共用context。
从你的需求来说,完全没必要复用fragment这个官方设计。你可以模仿它的思想自己写一个将activity代码分解的类型,就不会遇到这么多和android系统api的冲突了。
宿主activity仅展示插件fragment,fragment内部的操作 activity不做干涉。至于资源activity使用宿主的,fragment使用插件的。需求大概是这样 但是fragment怎么实例化 可以达到这个需求
资源activity使用宿主的,fragment使用插件的
这是现在无法做到的。因为Fragment的设计就是跟Activity使用相同Context的,所以它只能使用宿主资源。
因此我才建议你自己定义一个MyFragment接口,模仿Fragment的设计去解耦你的Activity代码到插件中。
Fragment主要关心的是Activity的生命周期以及其他和系统交互的API,对View并不特别干涉。而View本身是可以有独立的Context的。所以宿主中的Activity是可以添加来自插件的View的,这个View可以有自己来自插件的资源。
我现在是准备吧插件的fragment行为抽象成接口,然后所有的fragment实现抽象 不再继承系统的fragment。在宿主把它当作一个普通的类new出来,传入插件的context 在宿主使用一个空壳fragment转发系统的所有操作 这样可以吗?如果可行那插件的这个类在宿主new时是怎么创建的
应该是可行的,这样做就是把宿主中一个Fragment类的部分代码委托到插件中的普通类,从而动态化了。
宿主获取插件Context,以及宿主获取你定义的普通类,都需要通过控制反转设计,由插件向宿主注入这些类或对象的工厂。就像simple-host-lib中的类那样。
导致原因是同一个类被插件和宿主的classloader都加载过一遍,导致两个类之间不能互相转换,现在通过过滤指定类达到目的了 可以参考 https://github.com/Tencent/Shadow/issues/807