博客> cocoapods的使用详解
cocoapods的使用详解
2019-10-23 13:54 评论:0 阅读:1283 lyy_1990
ios cocoapods

文章参考如下博文: Enter your link description here: Enter your link description here: Enter your link description here:

一、什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第三方开源库的时间。 在使用CocoaPods之前,开发项目需要用到第三方开源库的时候,我们需要 1.把开源库的源代码复制到项目中 2.添加一些依赖框架和动态库 3.设置-ObjC,-fno-objc-arc等参数 4.管理他们的更新 在使用CocoaPods后,我们只需要把用到的开源库放到一个名为Podfile的文件中,然后执行pod install.Cocoapods就会自动将这些第三方开源库的源码下载下来,并且为我们的工程设置好响应的系统依赖和编译参数。

二、CocoaPods的原理 CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。

三、CocoaPods的安装 CocoaPods可以方便地通过Mac自带的RubyGems安装。 打开Terminal,因为ruby的软件源rubygems.org因为使用亚马逊的云服务,被我天朝屏蔽了,需要更新一下ruby的源,然后键入以下命令: gem sources -l (查看当前ruby的源) gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.org/ gem sources -l

如果gem太老,可以尝试用如下命令升级gem sudo gem update --system 升级成功后会提示: RubyGems system software updated

然后重新执行安装下载命令 sudo gem install cocoapods 这时候应该没什么问题了

接下来进行安装,执行: pod setup

Terminal会停留在 Setting up CocoaPods master repo 这个状态一段时间,是因为要进行下载安装,而且目录比较大,需要耐心等待一下.

四、Cocoapods的使用 打开终端cd到工程所在的目录(工程根目录) 执行命令 touch Podfile 这句是说新建一个名为Podfile的文件(不能写成别的名字,也可以自己在工程根目录里面直接新建)

然后对改文件进行编辑,执行命令 open -e Podfile 第一次执行这个命令,会有一个空白文件打开,按照如下格式输入: Podfile文件的格式应该如下: CocoaPods升级后(最新版本1.0.1),安装第三方库的时候会报如下错误: The dependency AFNetworking (~> 3.1.0) is not used in any concrete target. 原因:CocoaPods升级后,Podfile文件的内容格式要求发生了变化,必须指出指出所用第三方库的target。 解决步骤: (1)检查CocoaPods的版本 pod --version (2) 升级或安装最新版本(目前版本1.0.1) 注意:如果cocoapods已经是1.0.1版本,则跳过该步骤直接进入第三个步骤。 升级命令:sudo gem update -n /usr/local/bin --system 安装命令:sudo gem install -n /usr/local/bin cocoapods (3)修改Podfile的内容 升级前的Podfile文件的格式: platform:ios,'7.0' pod 'MJRefresh', '~> 3.1.0' pod 'SDWebImage', '~> 3.7.6' pod 'SVProgressHUD', '~> 2.0.3' 升级后的Podfile文件的格式: platform:ios,'7.0' target "MyProject" do pod 'MJRefresh', '~> 3.1.0' pod 'SDWebImage', '~> 3.7.6' pod 'SVProgressHUD', '~> 2.0.3' pod 'AFNetworking', '~> 3.1.0' end 在Podfile文件中需要明确指出使用第三方库的target,这里target后面跟的就是自己项目本身的Target;也就是项目中的tagrets中的那个项目名称。 需要注意的几点:platform那一行,ios三个字母都要小写,而且与前面的冒号之间不能有间隔,后面的版本号也可以不写,但是有些开源库对版本是有要求的,比如要在6.0以上才能运行,遇到这样的开源库就需要写上版本号。

platform下面就是Cocoapods需要集成的开源库,根据你的需要确定集成那些库。

举个例子: 我要集成AFNetworking这个库类,需要在Cocoapods里面先搜索是否有需要的库,可以在Terminal中输入: pod search AFNetworking 把pod ‘AFNetworking’, ‘~>2.5.3’,复制到我们的Podfile文件中,保存修改。 然后在Terminal中执行 : pod install 这样,AFNetworking就已经下载完成并且设置好了编译参数和依赖,以后使用的时候切记如下两点: 1.从此以后需要使用Cocoapods生成的 .xcworkspace文件来打开工程,而不是使用以前的.xcodeproj文件 2.每次更改了Podfile文件,都需要重新执行一次pod update命令

ps:当执行pod install之后,除了Podfile,还会生成一个名为Podfile.lock的文件,它会锁定当前各依赖库的版本,之后即使多次执行pod install也不会更改版本,只有执行pod update才会改变Podfile.lock.在多人协作的时候,这样可以防止第三方库升级时候造成大家各自的第三方库版本不一致。所以在提交版本的时候不能把它落下,也不要添加到.gitignore中.

[!] The YMTea [Debug] target overrides the OTHER_LDFLAGS build setting defined in Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation Use the $(inherited) flag, or Remove the build settings from the target. [!] The YMTea [Release] target overrides the OTHER_LDFLAGS build setting defined inPods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation

  • Use the $(inherited) flag, or
  • Remove the build settings from the target. 原因:我是在已有项目中集成Cocoapods的时候遇到这个问题,原因是项目 Target 中做了一些设置,CocoaPods 也做了默认的设置,如果两个设置结果不一致,就会造成问题。 解决方法:我想要使用 CocoaPods 中的设置,分别在我的项目中定义PODS_ROOT 和 Other Linker Flags的地方(build settings),把他们的值用$(inherited)替换掉,进入终端,执行 pod update 警告没了,回到 Xcode,build通过。 网上还流行另外一种简单粗暴的方法:点击项目文件 project.xcodeproj,右键显示包内容,用文本编辑器打开project.pbxproj,删除OTHER_LDFLAGS的地方,保存(这种我没试过)

4. [!] Oh no, an error occurred.

It appears to have originated from your Podfile at line 2.

Search for existing GitHub issues similar to yours: https://github.com/CocoaPods/CocoaPods/search?q=/Users/xiao6/Music/GI06实训芸茗茶叶/YMTea/Podfile:2:+syntax+error,+unexpected+':',+expecting+end-of-input platform+:+ios,+'7.0' ++++++++++^&type=Issues

If none exists, create a ticket, with the template displayed above, on: https://github.com/CocoaPods/CocoaPods/issues/new

Be sure to first read the contributing guide for details on how to properly submit a ticket: https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

Don't forget to anonymize any private data!

收藏
0
sina weixin mail 回到顶部