Cocoapods 二进制

栏目: IOS · 发布时间: 4年前

内容简介:什么是组件二进制化?为什么我们需要二进制化呢?下面是使用的工具个人理解上的对比,如果有不对的地方往指正和沟通,互相进步和学习

什么是组件二进制化?

  • 在iOS开发中,事实标准是我们使用CocoaPods生成、管理和使用library。这里的library就是一个模块、组件或库。二进制化指的是通过编译把组件的源码转换成静态库或动态库,以提高该组件在App项目中的编译速度。

为什么我们需要二进制化呢?

  • 在我们App开发中,我们逐渐的抽象了很多模块、业务、UI等把他转换成私有CocoaPod库。其中有很多我们自己的组件是用Swift写的,源码格式为.Swift。在app项目编译时.Swift部分代码编译非常慢。 随着业务的扩展,私有CocoaPod库和第三方CocoaPod库越来越多,App项目中的文件也越来越多。每次pod install安装新库或pod update更新库的时候,重新编译的过程需要等待很长时间。这也向我们提出了加快编译速度的需求。

下面是使用的 工具 个人理解上的对比,如果有不对的地方往指正和沟通,互相进步和学习

Cocopods组件二进制插件

  • 二进制化后,可以看出我们编译的target变少了,少了RxSwift.....这些target,这些就时间差的由来。
  • cocoapods-bin (是一个非cocoapods的开源项目)
    • 该插件进行二进制化的策略是采用双私有源,即2个服务器一个静态服务器保存预先打好包的.a或者framework,一个是我们现在保存源码的服务器,在install的时候去选择使用下载那个。
    • 该插件优点缺点也十分明显
      • 优点:源码和二进制文件之间可以来回切换,速度比较快
      • 缺点:源码的变动不能及时得到响应,而且需要第二个私有服务器
  • cocoapods-packager (cocoapods的开源项目)
    • 该插件是cocoapods的一个插件,主要是来将私有库打包成二级制的一个插件,通过修改*.podspec文件
    • 该插件的优缺点:
      • 优点:可以将私有库打包成二级制文件,由组件本身去管理二进制文件,方便为主项目集成,私有库变动等
      • 缺点:该库已经有很长一段时间不维护了,很多问题都未解决,而且我们的组件里依赖相对比较复杂,使用的Swift不能很好的支持。
  • cocoapods-binary (是一个非cocoapods的开源项目)
    • 该插件是开源的Cocoapods推荐的的一个插件,主要是来将Podfile里所依赖的组件选择性打包成二级制的一个插件,通过修改Podfile文件里的内容
    • 该插件的优缺点:
      • 优点:选择性的在将那些组件使用二进制,不需要多个服务去存二级制文件,二进制文件在pod install的过程进行预编译,生成的项目之间依赖framework。源码变动能比较快的得到相应
      • 缺点:二进制切换到源码文件的时候都会删除已经打好的二级制文件,下次切换需要重新编译新的二级制文件,这个过程比较耗时

Usage

在Podfile中加入以下内容

#引入插件  
plugin 'cocoapods-binary'  
#一定要使用framework  
use_frameworks!  
#该值打开后 默认所有的依赖都将开启二进制化  
#all_binary!  

#在依赖的组件后添加:binary => true/false 来切换源码和二级制 如果打开了上面的all_binary!后默认都是true   
target "HP" do   
  pod "ExpectoPatronum", :binary => true  
end
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Building Web Reputation Systems

Building Web Reputation Systems

Randy Farmer、Bryce Glass / Yahoo Press / 2010 / GBP 31.99

What do Amazon's product reviews, eBay's feedback score system, Slashdot's Karma System, and Xbox Live's Achievements have in common? They're all examples of successful reputation systems that enable ......一起来看看 《Building Web Reputation Systems》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具