之所以想写这个专题,有以下几点原因:
一、客户端开发不同于网页端开发,客户端要做修改上线就只能等到下次发版了,而网页端是可以随时修改上线的。要解决这个问题,插件是一个不错的思路。可以将app不同功能模块分别做成插件,然后主App动态加载,主app保留插件管理和一些基础功能,按一定的策略后台查询插件列表更新情况,然后静默更新插件,下次启动APP时就会加载到最新的插件了,用户毫不知情。划分功能模块可以保证每个插件都很小,更新起来也快,不必每次升级都动辄十几二十兆。这样有一些紧急bug修复也不用重新发版了。
二、平台级的App通常跨部门合作很多,经常要上线别的部门的一些业务,如果别人直接提代码到我们的分支上管理起来很不方便,而且各方开发上线进度也不好协调,更重要的是他们任何业务上的更改都得让我们的主APP重新发版,作为一个承载各种业务且业务总是频繁变更的平台级App,不可能三天两头就发一版,那样用户会崩溃的。
三、某些业务如智能家居,需要支持各种各样的设备,设备千千万,每种设备控制方式和展示形式都不一样,但是来一个新设备就开发一套功能会导致主APP极其臃肿,且大多数设备用户根本用不到,将一堆用户根本用不到的代码集成到主APP不是浪费么?而插件能比较好地解决这些问题,用户购买了什么设备就下载相应的插件动态加载即可。并且对智能家居平台App来说,设备那么多,如果什么都自己做,那得付出巨大的开发成本,不如由设备制造商自己做插件,他们对设备控制及业务各方面都熟悉,开发成本也低得多。
四、某些个性化需求如主题什么的,购买了就得立即生效,然而主题千千万,不可能全部集成在主App中,只有你购买了才会去下载,然后动态加载进主App,这也相当于插件了。
综上,插件其实是一门相当实用的工程技术,有必要进行实践探索,接下来几篇,我会针对各专题进行展开,并给出工程代码以供大家参考,如有问题,欢迎留言。