插件化技术预研
插件化技术预研
2016.8.9
1. 什么是插件化
插件化开发也是将一个项目app拆分成多个模块,这些模块包括宿主和插件。每个模块相当于一个apk,而组件化相当于一个lib。最终发布的时候将宿主apk和插件apk单独打包或者联合打包
2. 为何要插件化
随着项目开发的时间越来久,项目越来越大的时候,会遇到些问题:
A. 模块越来越多,如何有效的组装各个模块,让不同部门更好的协作开发
B. 软件包越来越大,安卓方法数超过65556,为了解决这个问题
C. 分模块进行并行开发,测试,提高模块开发效率再进行代码集成
D. 动态更新插件或远端调试,热修复
E. 按需下载功能,动态加载,减少安装包大小
F. 编译速度加快
目的是为了提高效率
3. 插件化的缺点
A. 技术复杂,技术够成熟稳定,各种市面上的开源框架都存在些问题
B. 谷歌官方不推荐,国内的市场太乱,在国内很火,国外几乎没有插件化的市场,国外Android生态环境好
4. Apk动态加载
动态加载和热更新基本上可以等同起来,主要的技术点
A. ClassLoader
B. Del分包
C. Class_ISPERVERIFIED
5. 市面上靠谱的插件化框架对比
开源的插件化框架
· Qihoo360/DroidPlugin
· CtripMobile/DynamicAPK
· mmin18/AndroidDynamicLoader
· singwhatiwanna/dynamic-load-apk
· houkx/android-pluginmgr
· bunnyblue/ACDD
· wequick/Small
6. React Native的出现对插件化的影响
React Native技术是facebook开源的用js创建原生app的框架,当前0.3版本,被大力推荐,但是无法撼动原生开发的地位,毕竟很多原生api不能支持的很好,很多酷炫的效果没有原生开发容易实现
7. 预研的结果:应该使用
插件化是近几年出现的新技术,出现的原因主要是国内的Android 生态环境杂乱,目前技术还算比较稳定,当app项目特别大的时候,将项目进行插件化,分模块开发,集成,支持热修复,提升开发测试效率,在大型项目中可以建议使用
8. 选用 Small
https://github.com/wequick/Small/
最新版的项目新建:测试过OK
https://github.com/wequick/Small/blob/master/Android/GETTING-STARTED.md
1. 使用Small
Small的启动
9. 安卓项目的模块化结构,包括
为了兼容插件化框架,将Android项目框架更新一下,结构如下
代码请参考压力缩包里的文件
附:
1. Small作者的GMTC演讲PPT : GMTC演讲PPT下载
2. 携程Android App插件化和动态加载实践 http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading
3. 移动应用插件化开发,摆脱软件作坊模式— 拥抱多人团队和多业务线整合
http://www.infoq.com/cn/presentations/embrace-integration-of-multi-person-team-and-multi-service-line
4. 专访罗迪:高二Android大牛的成长之路 http://www.infoq.com/cn/news/2016/05/lody-interview