您的位置:首页 > 移动开发 > Android开发

Android插件化(一)

2016-07-26 15:53 225 查看
Android插件化,之前看到过一篇2016GMTC全球移动开发大会上的演讲稿,讲的就是关于Android插件化的,然后又在网上查了一些关于此类的文章和博客,大致对这个东西有个粗浅的认识。

Android插件化也算是最近几年才流行起来的一项技术,随着移动端发展到现在,我们不管是从用户角色还是从开发者角色都对APP有了一些了解,从以前的比较小,比较单一的APP发展到现在各种五花八门的APP,一个APP集合了许多繁杂的东西,以至于APP的大小也是越来越大。

一、背景

1、对于用户来说,一个APP的大小越来越大,随着版本的更新,用户需要下载更新软件,但如果只是修改了其中的一个小模块的功能,用户就需要下载整个APP,不具有好的用户体验(对于我这种没有流量的人来说是多么痛的领悟,哈)。

2、从开发者的角度去看,一个大型的客户的APP往往有好多不同功能的模块,甚至还集成进入其他客户端,如果能够将这些模块分开单独去开发、修改,并且能够单独去发布,岂不是更好。

二、存在问题

模块功能越来越多,APK安装包越来越大,用户无法根据自己的需要选择性的去下载所需的功能模块;其中一个模块的小修改需要带动整个客户的重新发布版本,很不方便;功能越来越多,代码越来越多,很可能会碰到65535限制,即dex限制最大方法数不能超过65535,否则无法进行编译。

三、Android插件化

Android 插件化 —— 指将一个程序划分为不同的部分,比如一般 App 的皮肤样式就可以看成一个插件。

Android 组件化 —— 这个概念实际跟上面相差不那么明显,组件和插件较大的区别就是:组件是指通用及复用性较高的构件,比如图片缓存就可以看成一个组件被多个 App 共用。

Android 动态加载 —— 这个实际是更高层次的概念,也有叫法是热加载或 Android 动态部署,指容器(App)在运行状态下动态加载某个模块,从而新增功能或改变某些部分行为。

其实说白了,插件化技术就是将一个APP拆分开来,分成各种小APP,其中一个为主APP,可以在其中点击打开其他小APP,但是这些APP都是分别独立的,可以单独发布和更新;例如我们熟悉的QQ和微信等这些软件,里面就有涉及到插件化的使用,可以在界面里点开一些其他的游戏什么的,但这些游戏都是独立存在的,他们的版本更新并不需要将整个QQ都下载更新的。

现在好多大公司都有一些相对成熟的框架,但都技术保密,网上也有好多人发布的开源框架。插件化也分为好多不同的流派,实现方式和思想都不同,目前主要有三种:动态替换(HOOK)、静态代理和Dex合并(Android热修复的思想),这些我还没有具体查看研究,这里就简单提一下,有兴趣的可以自己去研究。

下面贴一些关于Android插件化相关的文章和一些开源框架的地址:

包建强在2016GMTC全球移动开发大会上关于Android插件化的演讲

http://www.infoq.com/cn/articles/android-plug-ins-from-entry-to-give-up

Android插件开发,初入殿堂

http://my.oschina.net/kymjs/blog/327232

Android 插件化 动态升级

http://www.trinea.cn/android/android-plugin/

apkplug框架

http://www.apkplug.com/

任玉刚的开源项目:

https://github.com/singwhatiwanna/dynamic-load-apk

一个点评工程师介绍的方式

https://github.com/mmin18/AndroidDynamicLoader
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 插件化