-
工程化
-
组件化:化整为零,各自独立的思想,不单单是为了复用。
-
组件独立编译
-
InputProcessOutput,IP => O
-
实现机制:URL-Block、Protocol-Class、CTMediator,前两者需要注册,最后一个无须注册。注册必定会额外耗费启动时间,且要注意注册的时序问题,可以在Mac-O层面去做优化。
-
容器化
包体积瘦身方案:
-
静态资源压缩,收益比较小。
-
重复资源去重,使用脚本在构建时扫描ImageName然后统一替换为md5,这样达到所有地方在构建时用到的都是同一个资源,没有重复。
-
相似资源去重,需要用一些机器学习的工具进行扫描,但需要谨慎处理,得业务方进行评判是否可以去重。
-
资源动态下发:可以分版本进行下发=>进一步进行增量下发。
-
代码层面去重。
Podfile中的组件版本号,使用索引库来管理,保证不同环境不同版本每次拉取到的组件版本号都是最新的。
做二进制加快编译速度,需要注意二进制与源码编译的ARC对齐问题