本期移动开发精英社群讨论的主题是「插件化」,上网查了一下,发现一篇 CSDN 博主写的文章《Android 使用动态加载框架DL进行插件化开发》。此处引用原作者的话:
随着应用的不断迭代,应用的体积不断增大,项目越来越臃肿,冗余增加。项目新功能的添加,无法确定与用户匹配性,发生严重异常往往牵一发而动全身,只能紧急发布补丁版本,强制用户进行更新。结果频繁的更新,反而容易降低用户使用黏性,或者是公司业务的不断发展,同系的应用越来越多,传统方式需要通过用户量最大的主项目进行引导下载并安装。怎么办?这里就可以参考浏览器-插件开发模式。
同时,笔者也在网络上发现了一些开源的插件化框架,包括:
(1) DynamicLoadApk
这个项目实现了一部分的动态加载,原理是 DexClassLoader 加 Activity 代理,可以看看。即在容器中注册几个代理的 Activity,启动插件的 Activity 时实际启动的都是代理的 Activity,这样就解决了 Activity 必须注册的问题。
这是点评一个工程师介绍的方式,和上面不同的是:它不是用代理 Activity 的方式实现而是用 Fragment 以及 schema 的方式实现
这个项目的原理实际也是 DexClassLoader 加 Activity 代理,不同的是上面的 dynamic-load-apk 项目中,插件需要依赖框架的 lib,插件组件继承框架 lib 的 Base 组件。而这个框架通过字节码操作动态生成一个子类去继承插件组件解决插件必须依赖框架的问题,从而达到插件无需做任何改动(理论上)即可加载的效果。
希望,上述的资料和内容,能够对大家了解插件化有所帮助,本期讨论的主题如下,文章系 ITOM 管理平台 OneAPM 整理。
- 什么是插件化?
- 为什么要插件化?
- 插件化需要哪些技术支撑?
- 插件化的坑都有哪些?
- 如何将插件化接入到项目中?
什么是插件化
主持人-龙伟: 大家是如何理解插件化的?
杨天飞-用友超客-android: 动态加载?
杨春-深圳杰为-android开发: 插件