插件化小结

1、主插件需要负责公用功能的初始化操作、TaobaoInit可配置为应用启动时初始化或插件Activity第一次启动时候的初始化。主插件维持application和classLoader。并且需要负责子插件的中转。

    ​    ​2、在编译的时候会将子插件程序伪装为so,并且合并menifest。

    ​    ​3、子插件可以直接编译为apk,他只需要负责实现自己的功能即可,尽量避免多个直插件之间互相干扰。

    ​    ​4、如果在apk发布后需要动态加载新的页面也业务。menifest是没有办法改变的,如何找到这个Activity呢?a ——可以使用欺骗的方式在classLoader的时候执行新发布的页面so。主插件持有的classLoader发现找不到Activity出现ClassNotFound ,此时动态改变加载的类以欺骗classLoader。b ——也可以使用一个容器Activity。事先配置好了这个Activity,程序只管理ContainerActivity,但是在这个Activity的生命周期里面,去手动调用我们新发布的Activity(比如MyActivity)的生命周期方法,这种时候,用户感觉到的是业务逻辑是MyActivity,但是ActivityManager管理的是ContainerActivity。

    ​    ​5、可以动态部署Fragment以解决Activity需要动态配置Menifest的问题,这就不需要欺骗classLoader了。

猜你喜欢

转载自479001499.iteye.com/blog/2235014
今日推荐