大部分APP在运行几年后,主包通常都会一点点变重,可能刚开始只是加一个会员中心,后来又陆续接入商城、客服、活动专区、办事工具和合作方服务。每个需求单独看都不算大,但经过几年之后,图片、组件、第三方依赖和初始化任务全都留在主工程里,安装包体积随之上涨。
包体变大还只是表面现象,更麻烦的是更新,可能一次普通的活动改版,业务侧可能只换了几张图片、调整了两处页面逻辑,客户端团队却要重新拉分支、合并代码、构建安装包、跑集成测试,再等待应用市场审核。改动只发生在一个短期活动里,发布流程却把整套 APP 都带了进来。
图片压缩、无用代码清理和原生模块化当然要做,但它们解决不了业务交付仍然绑在主包里的问题。资源压缩完,新业务还会继续加入;工程模块拆开了,发布时依然要打进同一个安装包。要让 APP 长期保持可维护,除了清理资源,还要重新划分业务的运行和发布边界。
接下来分享一个基于小程序容器的技术方案:是把更新频繁、流程相对完整的业务从主工程拆出,改成小程序代码包,通过小程序容器运行在 APP 内。
宿主 APP 留下稳定的客户端底座,业务团队维护各自的小程序,