插件化小结 博客分类: androidJava安卓
程序员文章站
2024-03-11 21:19:25
...
1、主插件需要负责公用功能的初始化操作、TaobaoInit可配置为应用启动时初始化或插件Activity第一次启动时候的初始化。主插件维持application和classLoader。并且需要负责子插件的中转。
2、在编译的时候会将子插件程序伪装为so,并且合并manifest。
3、子插件可以直接编译为apk,他只需要负责实现自己的功能即可,尽量避免多个直插件之间互相干扰。
4、如果在apk发布后需要动态加载新的页面也业务。manifest是没有办法改变的,如何找到这个Activity呢?a ——可以使用欺骗的方式在classLoader的时候执行新发布的页面so。主插件持有的classLoader发现找不到Activity出现ClassNotFound ,此时动态改变加载的类以欺骗classLoader。b ——也可以使用一个容器Activity。事先配置好了这个Activity,程序只管理ContainerActivity,但是在这个Activity的生命周期里面,去手动调用我们新发布的Activity(比如MyActivity)的生命周期方法,这种时候,用户感觉到的是业务逻辑是MyActivity,但是ActivityManager管理的是ContainerActivity。
5、可以动态部署Fragment以解决Activity需要动态配置Menifest的问题,这就不需要欺骗classLoader了。