cocoaPods管理本地库


为什么要进行本地的包管理

  • 有的时候CocoaPods的spec版本过旧,pull request没有及时merge,导致我们无法利用CocoaPods使用较新的代码版本;

  • 有的时候我们的一些代码不是开源的,或者暂时不想放到Github上。我们更想使用CocoaPods引用本地的代码;

使用CocoaPods里没有的第三方库新版本

这里我们以PlayHavenSDK为例介绍一下。我们在CocoaPods / Spec这个repository里面可以看到,PlayHavenSDK的版本是1.11.0。而playhaven / sdk-ios里面的tag,已经有了1.12.1这个版本。CocoaPods的Spec repository已经落后了两个版本。这时我们想使用最新版,需要的就是一个更新的spec。

161500_r6ef_1418722.png

我们回到Xcode project目录中,打开Podfile,添加pod 'PlayHavenSDK', :podspec => '~/Desktop/PlayHavenSDK/PlayHavenSDK.podspec',接着运行pod update即可。这里我们注意到s.source这一行配置,指向了playhaven/sdk-ios.git仓库的1.12.1这个tag,表示这个spec将使用这个tag的代码。我们将它保存到本地的一个目录中,如~/Desktop/PlayHavenSDK/PlayHavenSDK.podspec

PS: 当然这个podspec也可以不放在本地,比如放在gist上。

使用CocoaPods管理本地代码

这种情况稍微复杂一步,除了指定podspec,还需要准备一个本地要使用的git repository。我们以Chartboost为例来进行说明。

首先我们新建一个名为~/Desktop/ChartboostSDK/的目录,然后执行git init初始化这个git repository。

接着我们去Chartboost官方网站下载最早新的SDK。将它放进这个目录中,然后执行git add . && git commit -m"Add new SDK"

这样我们这个目录已经成为一个git repository,里面是最新的Chartboost SDK。

这时我们仍然需要一个podspec文件,来说明我们从哪个仓库来获取代码:

161634_puxQ_1418722.png

除了两个.h,一个.a,还有一个podspec文件。我们运行ls -lh | awk '{print $9}',ChartboostSDK目录的结构显示如下:

161704_hJkj_1418722.png

接着我们回到Xcode proj所在的文件夹中,编辑Podfile,添加pod 'ChartboostSDK', :local => '~/Desktop/ChartboostSDK'。这里的local表明从本地的git仓库里获取代码。

最后我们运行pod update,大功告成。

CocoaPods小结

上面的两种情况,简单来说:

  • 需要使用最新的开源代码/库,但没最新的spec

  • 需要使用私有代码/库,需要对应的私有的spec

对于第一种情况,建议大家可以给CocoaPods / Specs提交一个pull request。

使用CocoaPods只需要知道两件事情:

  • podspec:一个pod的配置是什么,pod的代码放在哪里

  • Podfile:项目依赖哪个pod,以何种方式依赖,它的podspec放在哪里

这里podspec和git repository都非常灵活,可以放在本地,也可以放到github/gist上。代码仓库甚至可以不使用git而直接使用一个zip压缩包。

使用CocoaPods可以把多们从繁重的配置和代码管理中解脱出来,而且可以少犯错误。比如Deployment Target设置为5.0,但App中需要使用AdSupport.framework,如果忘记设置为optional则所有5.x的设备运行时都会crash。对于这种情况CocoaPods在spec提供了weak_frameworks的配置选项。同时CocoaPods能够保证库的依赖关系,而不会出现几个项目依赖版本不一致的情况。


转载于:https://my.oschina.net/u/1418722/blog/182764

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值