android插件化、组件化、热补丁傻傻分不清

时至今日,国内的android技术可谓是走在世界前沿,这或许还得感谢这堵“墙”的作用,正所谓哪里有压迫哪里就有反抗啊

从2015年中旬,android插件化的兴起,到2016年底,随着微信tinker的开源。android的插件化、组件化、热补丁(热修复)框架已是遍地开花。

由于公司在移动端的项目非常少(所以年后打算跑路),而且到目前为止也还没碰到65536的天坑,再加上最近两个月又被拉去做后台。所以小弟对于android日新月异的技术看得是眼花缭乱,虽然保持着每天逛github,逛大牛博客,看公众号文章,也架不住各种黑技术的涌现,所以想在这里给自己理一理插件化、组件化、热补丁到底是什么鬼…….what the hell

先来说说什么是插件化:
现在我们使用一个app都是需要先安装的,那么有没有办法避开安装直接就可以使用app呢?随着需求的增加,app的功能越来越多,慢慢变成超级app,在这种情况下,如果把所有的功能都集中在一个module进行开发,那无疑是一场噩梦,虽然说AndroidStudio的编译速度已经改善很多,但是如果一个超级app(例如美团、微信),集中在一个module下进行开发然后再编译的话,那估计大半天就呆呆的看着电脑了。所以如果可以把不同业务模块单独成一个apk,在运行的时候再去动态加载不同的apk,对于开发、测试、维护来说都是一件好事情,这也就是插件化出现的原因
以下是插件化的以下框架和好文:

美团插件化介绍美团插件化
美团插件化infoq上的介绍
DynamicLoadApk 比较早的一款插件化项目,任玉刚等研发。
DroidPlugin360手机助手推出的插件化项目
DynamicAPK 携程出品的插件化框架
VirtualAPK,滴滴出行推出的插件化项目,尚未开源,介绍见此

组件化:
像网络请求,图片加载,日志生成这些模块基本上是每个app必备。更甚者,同一个app可能会多处用到网络请求,图片加载,而这些代码却是与业务无关的。那么自然就会想这些常用且通用的模块能不能单独出来成为一个组件,在多处用到的地方就不用再去写重复的代码,把更多的时间精力花在业务逻辑上,这就是组件化了。
组件化和插件化其实很像,区别就在于:
组件化是在编译期分模块,插件化是在运行期。一般插件化用于动态修复bug或者动态更新模块,相对来说黑科技更多一些。
正常一个App中可以有多个module,但是一般只会有一个module是设置为application的,其他均设置为library,组件化开发就是要每个module都可以运行起来,因此在开发期间每个module均设置为application,发布时再进行合并。
而插件化则是把每个模块单独作为一个apk,甚至每个单独的apk都能独立运行。

Android组件化开发实践
Atlas:手淘Native容器化框架和思考
大腾讯的mars

热补丁:
这就基本上顾名思义了,app最大的痛点就是已经上线的项目出了bug怎么办?以前是马上召集开发人员,改掉bug然后提交应用商城审查,再弹窗提醒用户需要更新版本,这样折腾下来估计没有3,4个月用户手里的app还不能更到新的版本,而且这影响了用户体验。因此热补丁便出现了,其实插件化也是可以修复线上bug的,只是热补丁的关注点在对应用进行方法级的替换以达成修复。

tinker,开源一个月就超过5000star
AndFix阿里推出的开源项目,并且在其基础之上衍生了商业服务。
Amigo饿了么推出的开源项目。
美团大众点评Android热更新方案

呼……终于理清这些高大上的黑科技了,希望以后能在工作中用上,到那天小弟我也就成为大牛了,因为这些都是当下android界的高高高级技术

你可能感兴趣的:(android插件化、组件化、热补丁傻傻分不清)