您的位置:首页 > 移动开发 > IOS开发

IOS 开发学习十八 包管理工具 CocoaPods的使用

2015-05-25 09:52 465 查看

一、简介

开发IOS应用时,经常会用到一些第三方开源类库,如JSONKit、AFNetWorking、QRCode等。一个类库可能还会引用其它类库。手动去一个个加载就显得比较麻烦。而CocoaPods就是用来解决类库引用问题的,它类似于PHP上的Composer、JAVA上的Maven,也许与Linux平台的apt-get命令也有相似之处。
官网地址: https://cocoapods.org

二、安装

CocoaPods需要先安装好Ruby环境,默认应该是已经安装的,这里不再介绍Ruby安装方式,直接介绍CocoaPods安装。
命令行输入
sudo gem install cocoapods
如果输入密码后很长时间没有反应,或提示无法找到,可能地址被墙了,那要先输入:
gem sources --remove https://rubygems.org/ //等有反应之后再敲入以下命令
gem sources -a https://gems.ruby-china.org/
gem sources -l


把镜像改为国内的镜像。

这时界面输出:
*** CURRENT SOURCES ***
 https://gems.ruby-china.org/[/code] 
再执行安装命令。
如果提示:
Unable to resolve dependencies:cocoapods requires cocoapods-core(=0.35.0),...
则先运行:
sudo gem update --system
如果再提示:
ERROR: While executing gem... (Errno::EPERM)
   Operation not permitted - /usr/bin/xcodeproj
则运行:
sudo gem install -n /usr/local/bin cocoapods


安装完后执行

pod install 命令 ----安装仓库。


也可以通过插件安装:(未测试)
安装一个xcode插件管理工具http://alcatraz.io,执行curl -fsSLhttps://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh|
sh  完了打开xcode->window->package manger 搜cocoapods安装,方便操作。

三、ionic项目添加CocoaPods支持

1.  使用xcode打开项目 
2. 编辑文本
vim Podfile
# Uncomment this line to define a global platform for your project
platform :ios, '7.0'

target 'Demo' do

pod 'AFNetworking', '~> 2.0'
pod 'JSONModel', '~> 1.1.2'
pod 'AFKissXMLRequestOperation@aceontech', '~> 0.0.4'

end

target 'DemoTests' do

end
然后命令行运行:pod install --verbose --no-repo-update



四、使用示例

1.项目里引用QRCode
首先验证QRCode是否支持CocoaPods
pod search QRCodeReaderViewController
输出:
-> QRCodeReaderViewController (3.4.0)
Simple QRCode reader for iOS 7 and over
pod 'QRCodeReaderViewController', '~> 3.4.0'
- Homepage: https://github.com/YannickL/QRCodeReaderViewController - Source:   https://github.com/yannickl/QRCodeReaderViewController.git - Versions: 3.4.0, 3.3.0, 3.2.3, 3.2.2, 3.2.1, 3.2.0, 3.1.0, 3.0.0, 2.0.0,
1.0.1, 1.0.0 [master repo]
到项目的.xcodeproj目录,建立Podfile文件:
touch Podfile
vim Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0'
pod 'QRCodeReaderViewController', '~> 3.4.0'


保存后,输入命令:
pod install


安装完成后,输入命令:
open MyProject.xcworkspace
打开项目,不要用.xcodeproj打开项目。

以后需要升级使用的开源库时,只需要输入:
pod update
即可自动完成更新。

四 删除类库

1.删除Poads里的类库文件夹
2.把Podfile里删除对应行
3.重新执行pod install命令。

五 其它命令


有时经常卡住,可能要这样清理一下。如果xcode升级,这里有时也要这么操作一下:

pod repo remove master --删除主仓库
pod setup --重建安装
pod install

跳过更新仓库的操作直接安装类库 

pod install --verbose --no-repo-update

pod update --verbose --no-repo-update

方法2:

运行:
rm -rf ~/.cocoapods/repos/masterpod repo remove masterpods install --verbose
可以看到下载提示。
确认是否在运行:
cd ~/.cocoapods
du -sh


看值一直在变大,就是正在下载。

方法3:

下载安装github desktop登陆github,把项目https://github.com/CocoaPods/Specs  fork到自己的github账户下打开github desktop , clone Specs到本地电脑改名为master,放到~/.cocoapods/repos/master

其它问题处理:



运行pod install时

提示An error occurred while processing the post-install hook of the Podfile.undefined method `project` for #<Pod::Installer:0x007ffa309af2e0>
处理方法:
打开Podfile,把里面的 project 改为 pods_project

不支持i386

工程在模拟器上编译报错,不支持i386,Cocoapods确实还不支持64位模拟器,解决办法:

方法1:

1.build active architecture only 在debug的时候设置成YES,不要在release的时候用模拟器   

2.other linker flags 加一个 $(inherited)

pods root也可能需要设置为$(inherited)

方法2:(未测试)

点击项目文件 project.xcodeproj,右键`显示包内容`,用文本编辑器打开`project.pbxproj`,删除`OTHER_LDFLAGS`的地方,保存,回到 Xcode,编译通过。

需要对第三方库修改

先把git fork到自己账号下,然后编辑Podfile:

platform :ios, '7.0'
pod '要导入的库', :git => 'https://github.com/我的github/要导入的库'

Xcode 提示Pod错误

diff: /../Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

1.关闭Xcode,重新执行pod install,之后再重新打开Xcode运行。
2.删除一下文件

xcworkspace

Podfile.lock

Pods文件夹

~/Library/Developer/Xcode/DerivedData路径下对应工程的文件夹

然后重新执行pod install

3.如果以上都不行
检查Project->选择Info tab->看看Configurations是不是被设置为 None了,如果是None的话改为Pods
4.右键工程根目录下的xxx.xcodeproj文件,显示包内容

双击打开project.pbxproj文件查找"Pods-resources.sh", 把路径改为如下红框处:



解决方案参考:http://www.jianshu.com/p/4c3164fe552a
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: