iOS 二进制化之路(CocoaPods && Carthage)

2018-02-09 12:48:25来源:https://www.jianshu.com/p/206fe82315b5作者:CNKCQ人点击

分享


前言

  iOS 组件化之路的过程中,我们有一件事需要做---那就是二进制化,二进制化通常是针对我们项目中常用的但又很少更改的的第三方库,将第三方库打包成二进制文件减少协同开发中的文件冲突又可以大大的加快编译速度提高工作效率。


正文

  用过 Carthage 的人都知道,它能将 iOS 的第三方依赖编译成二进制文件,然后我们手动引入项目中,这可以说正是与 CocoaPods的优势所在,CocoaPods 则是 iOS工程组件化中不可或缺的角色,CocoaPods的第三方库之多、用户之广是其他工具所望尘莫及的。然而怎样将它两的优势结合起来呢?
我们知道 CocoaPods 可以支持配置Podspec来控制我们的第三方库依赖形势,




image.png

  我们平时都知道 CocoaPods是一个 Ruby工程,因此Podspec也是一个 Ruby文件,由上图我们可以知道,我们的第三方库有源码和二进制文件等多种引用形式,我们每次制作三方库的时候我们都可以选择相应的文件形势,那么我们可能会思考,我们想在源码和二进制文件之间切换可以实现吗?既然PodspecRuby 文件,那么一定支持Ruby语法,我们可以加入逻辑判断来控制我们是使用源码还是二进制文件:
Pod::Spec.new do |s|
s.name = 'Foundation+'
s.version = '4.5.1'
s.license = 'MIT'
s.summary = 'Elegant HTTP Networking in Swift'
s.homepage = 'https://github.com/Alamofire/Alamofire'
s.social_media_url = 'http://twitter.com/AlamofireSF'
s.authors = { 'Alamofire Software Foundation' => 'info@alamofire.org' }
s.source = { :git => 'https://github.com/Alamofire/Alamofire.git', :tag => s.version }
s.ios.deployment_target = '8.0'
s.osx.deployment_target = '10.10'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
if ENV['source'] == true || ENV['Foundation+'] == true
s.source_files = 'Foundation+/Source/*.swift'
else
s.vendored_frameworks = "Carthage/Build/iOS/Foundation+.framework"
end
s.preserve_paths = 'Foundation+/'
end

  很可惜这种方法在 github 远程公有仓库中无效(私有库的信息记录文件是以 *.podspec 格式存在的, 而共有库的文件是以 *.podspec.json 格式存在的),如果你们又更好的方法请告诉我

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台