插件化技术预研

插件化技术预研

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

NewImage

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

NewImage

Small的启动

NewImage

9.  安卓项目的模块化结构,包括

为了兼容插件化框架,将Android项目框架更新一下,结构如下

NewImage

代码请参考压力缩包里的文件

附:

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

Share your thoughts