http://www.360doc.com/content/16/0109/15/9200790_526629193.shtml
1、什么是插件化开发
拿活跃用户量第一的微信来说,在第三个界面有个游戏,点开后可以选择很多的增植功能,这里腾讯只放了一些网页应用,那么如果未来想加入一个益智游戏,要怎么做?让用户重新安装吗,这就是插件化开发所解决的问题。
插件式开发通俗的讲就是把一个很大的app分成n多个比较小的app,其中有一个app是主app。基本上可以理解为让一个apk不安装也可以被运行。只不过这个运行是有很多限制的运行,所以才叫插件否则就叫病毒了。其实在目前淘宝、百度、腾讯、等都有成熟的动态加载框架,包括apkplug,但是它们都是不开源的。
2、Android插件化
- Android 插件化 —— 指将一个程序划分为不同的部分,比如一般 App 的皮肤样式就可以看成一个插件
- Android 组件化 —— 这个概念实际跟上面相差不那么明显,组件和插件较大的区别就是:组件是指通用及复用性较高的构件,比如图片缓存就可以看成一个组件被多个 App 共用
- Android 动态加载 —— 这个实际是更高层次的概念,也有叫法是热加载或 Android 动态部署,指容器(App)在运?状态下动态加载某个模块,从而新增功能或改变某?部分行为
3、优缺点:
优点:
- 模块解耦
- 解除单个dex函数不能超过 65535的限制
- 动态升级
- 高效开发(编译速度更快)
基于插件的开发列举两个比较突出的优点:
- 应用程序非常容易扩展,比如一个新的领域要加到旧的应用程序中,只需把这个新的领域做为一个插件,只开发这个小的app就可以了,旧的应用程序可能会原分不动,就连编译打包都不需要。
- 下载更新特别省流量,假如一个应用程序有10M把它分成两个的话可能每次更新只需要花费5M或者更少的流量就可以更新完。
追求完美本来就是一种性格缺陷,说在做软件方面没有近乎完美。基于插件开发当然不是插件越多越好能掌控好内聚和耦合度就更好了。插件增加了主应用程序中的逻辑难度。有优点的东西也是有缺点的这是必然。
缺点:
- 增加了主应用程序的逻辑难度
- 技术有难度,目前一些成熟的框架都是闭源的
参考资料:
1.android插件化及动态部署 - ATLAS–伯奎(阿里无线事业部无线技术专家)
http://club.alibabatech.org/resource_detail.htm?topicId=84
http://v.youku.com/v_show/id_XNTMzMjYzMzM2.html
2.怎么将 Android 程序做成插件化的形式?–知乎
http://www.zhihu.com/question/19981105/answer/30865268
3.Android 插件化 动态升级
http://www.trinea.cn/android/android-plugin/
4.apkplug框架
http://www.apkplug.com/
5.Android插件化开发,初入殿堂
http://my.oschina.net/kymjs/blog/327232
6.Android 插件框架 AtlasForAndroid(阿里使用框架)
https://github.com/bunnyblue/OpenAtlas
Simple Project
https://github.com/bunnyblue/OpenAtlasExtension