### 一、概要 cocoapods-tdf-bin功能点: - 组件二进制化,`无入侵式`支持组件二进制化,完全自动化,无需手动操作。致力于解决Ci打包速度慢、研发编译慢等编译问题。 cocoapods-imy-bin插件所关联的组件二进制化策略: - 预先将打包成 `.framework` 的组件保存到静态服务器上,并在 `install` 时,去下载组件对应的二进制版本,以减少组件编译时间,达到加快 App 打包、组件发布等操作的目的。 ### 二、准备工作 #### 1. 安装插件 ```shell gem install cocoapods-tdf-bin # 没有权限用 sudo gem install cocoapods-tdf-bin ``` ### 三、使用二进制插件 #### 1. 环境搭建 使用二进制时,本插件需要提供以下资源: - [二进制私有源仓库(保存组件二进制版本 podspec)](https://git.2dfire.net/ios/cocoapods-spec-binary); - 静态资源服务器( [FrameworkServer](https://git.2dfire.net/ios/FrameworkServer),附详细使用教程); #### 2. 初始化插件 ```shell pod bin init ====== dev 环境 ======== 开始设置二进制化初始信息. 所有的信息都会保存在 /Users/imwcl/.cocoapods/bin_dev.yml 文件中. %w[bin_dev.yml bin_debug_iphoneos.yml bin_release_iphoneos.yml] 你可以在对应目录下手动添加编辑该文件. 文件包含的配置信息样式如下: --- configuration_env: dev code_repo_url: git@git.2dfire.net:ios/cocoapods-spec.git binary_repo_url: git@git.2dfire.net:ios/cocoapods-spec-binary.git binary_download_url: http://iosframeworkserver-shopkeeperclient.app.2dfire.com/download/%s/%s.zip binary_upload_url: http://iosframeworkserver-shopkeeperclient.app.2dfire.com/upload/%s/%s.zip download_file_type: zip ``` 按提示输入`所属环境`、源码私有源、二进制私有源、二进制下载地址、下载文件类型后,插件就配置完成了。其中 `binary_download_url` 需要预留组件名称与组件版本占位符,插件内部会依次替换 `%s` 为相应组件的值。 `cococapods-tdf-bin` 也支持从 url 下载配置文件,方便对多台机器进行配置: ```shell pod bin init --bin-url=https://github.com/su350380433/cocoapods-imy-bin-configs/raw/master/bin_dev.yml ``` ### 四、制作二进制组件 #### 1. 制作命令 可以直接使用插件的 `pod bin auto`命令,在插件初始化配置完成后,目录下只要有包含podspec文件,根据podspec文件的version版本号会自动化执行build、组装二进制组件、制作二进制podspec、上传二进制文件、上传二进制podspec到私有源仓库。 ```shell pod bin auto # --code-dependencies 为源码依赖 # --only-build 为只生成产物,不上传代码 # --all-make 为将所有依赖库都打包 # --use-modular-headers 为输出 framework 为modular-headers # pod bin auto --code-dependencies --only-build --all-make --use-modular-headers ``` #### 2. 二进制Podspec 会自动生成、上传,无需关心。 #### 3. 查看结果 - 二进制存储服务:http://iosframeworkserver-shopkeeperclient.app.2dfire.com/frameworks?allinfo=true; - 二进制私有源:https://git.2dfire.net/ios/cocoapods-spec-binary; #### 4. 使用二进制 在Podfile文件中,加入这两行代码,对已经制作二进制的就会生效,自动转换二进制组件依赖: ```ruby plugin 'cocoapods-tdf-bin' # 全部开启二进制 use_binaries! set_use_source_pods [ # 需要源码调试的业务库 ] ```