swift实用功能

Xcode 构建速度优化(三)Cocoapods-Binary

2021-08-19  本文已影响0人  nemie

在讨论什么是Cocoapods-binary之前,先上一张目前demo项目的编译分析图


image.png

其中在target demo之下的target均为Pod中的target, 从图上可以看出,在项目全量编译阶段也需要编译pod中的target, 对于一个集成几十乃至上百个第三方的项目而言,这个时间也会累计到一定量级。
如果能提前将Pod中的开源库都提前编译好,在后续省去这一步操作,对于提高项目的整体编译速度会有很大收益。

pod二进制化

pod二进制化指的是通过编译把pod中的第三方库源码转换成静态库或动态库,从而提高App项目中的编译速度。对比完整编译源码,二进制化的三方库省去了编译阶段,直接进行链接

cocoapods-binary

cocoapods-binary是Cocoapods官方推荐的一个插件,主要是来将Podfile里所依赖的组件选择性打包成二级制的一个插件,使用非常简单,通过修改Podfile文件里的内容即可

安装

gem install cocoapods-binary

如果遇到报错:

Error loading RubyGems plugin ....

image.png

可以通过更新ruby命令解决

rvm install ruby-2.6

使用

修改Podfile

platform :ios, '9.0'
use_frameworks!
# all_binary!
target 'Demo_Target' do
  
   pod 'YYKit', :binary => true
   
   pod 'AFNetworking', '~> 4.0', :subspecs => ['Reachability', 'Serialization', 'Security', 'NSURLSession'], :binary => true
   
   pod 'SDWebImage', '~> 5.0.0', :binary => true
   
   pod 'MJRefresh'
   #pod 'MBProgressHUD'
   pod 'IQKeyboardManager', :binary => true

在开始位置引入插件cocoapods-binary
在需要二进制化的库后面添加: :binary => true
如果全部库均需要二进制化, 直接在起始位置使用all_binary!, 这样默认所有库均提前编译,相当于默认开启二值化选项
在使用all_binary!情况下,如果有些库不需要开启二进制化,可以在后面添加:binary => false

成果

在将大部分库均转成二进制后, demo的全量编译速度平均提升了二十秒左右,从编译分析图上也可以看出整体趋势


image.png

在一次全量编译中三方库的整体用时相比之前少了很多

注意事项

上一篇 下一篇

猜你喜欢

热点阅读