二进制化的实现 Server端部署组件库更新,编译一次享受持续开发!
2023-11-14 23:51:51
正如美团外卖iOS多端复用的推动、支撑与思考文章提到的逐步的组件拆分提升编译效率,很多人知道二进制化,但对具体怎么实现的知之甚少,今天来谈谈Cocoapods-Binary的原理及设计理念,带你了解如何支持Server端缓存,如何支持团队统一维护各组件最新二进制版本,以及如何利用Server端部署组件库更新,编译一次享受持续开发。
什么是二进制化
二进制化指将源码通过编译生成二进制文件,便于组件间的复用,二进制文件包含了符号表 用于标识该二进制文件中的符号(如方法名、类名等),以便静态链接器将调用该组件的代码与符号表相连接。对于组件化团队来说,项目集成各模块时,只需将依赖模块生成的二进制文件以静态库或Framework的方式引入即可,这避免了重复编译所依赖的组件的源码。
例如对于用户界面中使用到的一个组件,将这个组件单独编译成一个二进制文件,Team A依赖并集成该组件只需要引入该二进制文件,而不需要Team A也去获取组件的源代码并进行编译,节省了Team A的编译时间和空间。这样做的好处是,只要Team B对这个组件更新了,那么只需要将更新后的二进制文件提供给Team A即可,Team A只需要重新集成一下即可,而不必关心组件的源代码。
Cocoapods-Binary的设计与原理
Cocoapods-Binary工具支持组件化和二进制化开发,它允许用户创建并发布组件的二进制文件。Cocoapods-Binary将组件的源代码编译成二进制文件,并将其发布到远程服务器上,这样其他开发人员就可以在他们的项目中使用这些二进制文件。
Cocoapods-Binary支持Server端缓存,允许团队统一维护各组件最新二进制版本。Server端缓存将组件的二进制文件存储在中央服务器上,这样当开发人员需要使用某个组件的二进制文件时,他们可以从服务器上下载该文件,而无需从源代码重新编译。这可以节省开发人员的时间并确保他们使用的是组件的最新版本。
Cocoapods-Binary还支持Server端部署组件库更新。当某个组件更新时,Cocoapods-Binary会将更新后的二进制文件发布到服务器上,这样开发人员就可以从服务器上下载该文件并更新他们的项目。这可以确保开发人员始终使用组件的最新版本。
优势
使用Cocoapods-Binary有很多好处,包括:
- 提高编译速度 :通过使用二进制文件,可以避免重复编译所依赖的组件的源码,从而提高编译速度。
- 节省磁盘空间 :二进制文件通常比源码文件小,因此可以节省磁盘空间。
- 提高代码安全性 :二进制文件可以隐藏组件的源代码,从而提高代码安全性。
- 方便代码共享 :二进制文件可以很容易地与其他开发人员共享,从而方便代码共享。
总结
Cocoapods-Binary是一款功能强大的组件化和二进制化开发工具,它可以帮助开发人员提高编译速度、节省磁盘空间、提高代码安全性并方便代码共享。如果您正在开发一个组件化项目,那么强烈建议您使用Cocoapods-Binary。
实践方案
1. 搭建Server端缓存
1.1 部署工具
我们将使用Redis作为Server端缓存工具,需要先部署Redis服务,Redis是一个开源的,使用ANSI C语言编写的,支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并且提供多种语言的API。
1.2 设计架构
- 将发布到远程服务器上的组件的二进制文件,也同步缓存到Redis中;
- 当开发人员需要使用某个组件的二进制文件时,先从Redis缓存中获取,如果缓存中没有,再从远程服务器上下载;
- 当组件更新时,也同时将更新后的二进制文件发布到Redis缓存中。
这样,开发人员就可以从Redis缓存中快速获取组件的二进制文件,而无需从远程服务器上下载,从而节省了时间并提高了开发效率。
2. Server端部署组件库更新
2.1 部署工具
我们将使用Gitlab作为Server端部署组件库更新的工具。Gitlab是一个用于代码托管和版本控制的系统,基于Git实现,与GitHub类似,支持Web端操作,可以进行代码提交、拉取、合并、查看历史记录等操作。
2.2 设计架构
- 将组件的源代码托管在Gitlab上,并建立多个分支,每个分支对应一个组件的版本;
- 当组件更新时,将更新后的源代码提交到对应的分支上;
- Cocoapods-Binary会从Gitlab上获取最新的源代码,并编译成二进制文件,然后将二进制文件发布到远程服务器上;
- 当开发人员需要使用某个组件的二进制文件时,先从Redis缓存中获取,如果缓存中没有,再从远程服务器上下载;
- 当组件更新时,Cocoapods-Binary会将更新后的二进制文件发布到Redis缓存中。
这样,开发人员就可以从Redis缓存中快速获取组件的二进制文件,而无需从远程服务器上下载,从而节省了时间并提高了开发效率。
写在最后
随着组件化的不断深入,越来越多的团队开始采用二进制化来提高编译速度和节省磁盘空间。Cocoapods-Binary是一款功能强大的组件化和二进制化开发工具,它可以帮助开发人员提高编译速度、节省磁盘空间、提高代码安全性并方便代码共享。如果您正在开发一个组件化项目,那么强烈建议您使用Cocoapods-Binary。