返回

二进制化的实现 Server端部署组件库更新,编译一次享受持续开发!

IOS

正如美团外卖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。