cocoapod 安装

通过这个教程,你会学习使用一个很流行的第三方开源组件管理工具----CocoaPods。不过这个工具是什么,为什么要使用它呢?

作为一个iOS开发者,你一定会用到很多别人的代码,这些代码以类库的形式提供。想象一下,如果所有的东西都要你从零开始创建,得有多麻烦!

如果没有管理工具,你可能会简单地将每个组件加入到你的工程中。但是,这么做有一些弊端:

1. 组件代码保存在你的工程中,浪费空间。

2. 没有一个集中的能看到所有可用组件的地方。

3. 查找和升级组件很困难,尤其是有多个组件需要升级。

4. 在你的工程中下载然后引入组件可能存在这样的风险:修改其代码,然后搁置一边。从而导致下次升级时更加麻烦。

一个第三方组件管理工具可以帮助你克服这些问题。它能自动获取组件的源代码,解决类库之间的依赖,甚至可以创建并维护一个正常的环境来创建你的项目。

在本教程中,你会学习如何使用CocoaPods。特别的是,你会使用多个开源组件来创建一个app,它可以获取并展示来自 trakt.tv 的电视及电影信息。CocoaPods让这个过程变得非常简单。接着往下看!

准备开始

开始之前:该教程需要你熟悉Xcode,命令行工具,了解ASIHTTPRequest组件、JSON格式。如果你对这些都不熟悉,先看看 其他教程 。

PS: 原文中的示例太复杂,和CocoaPods关系不大,因此我强行替换成一个使用ASIHTTPRequest查询天气的示例demo 。

CocoaPods官网 说,它是Objective-C工程下最好的管理类库依赖的工具,这么说确实不假!与其自己从GitHub下载代码然后复制到你的工程中,导致将来升级很困难,CocoaPods可以帮你做这些事。

下面,你需要安装CocoaPods。它在Ruby下运行,不过这是它唯一的限制。幸运的是,最近版本的Mac OSX系统(从OS X10.7Lion开始)都已经预装了Ruby。所以你只需要更新RubyGems到最新版本。

打开终端,然后输入如下的命令:

sudo gem update --system

按提示输入密码,

要注意在终端中密码不显示字符,只要输完后按回车即可

。终端中输入看起来应该是这样的:

更新会花费一点时间,耐心等待几分钟。

然后,你需要安装CocoaPods。在终端中输入如下命令:

sudo gem install cocoapods

如果安装过程中遇到以下提示,输入y继续。

rake's executable "rake" conflicts with /usr/bin/rake
Overwrite the executable? [yN]

最后,在终端中输入如下命令来完成安装:

pod setup
这条命令,将  CocoaPods Specs repository

复制到你电脑上的~/.cocoapods目录下,它需要一点时间来完成。

到这里,你已经成功安装了CocoaPods!

安装过程中如果报错:

ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/xcodeproj

解决方法:自定义GEM_HOME
$ mkdir -p $HOME/Software/ruby
$ export GEM_HOME=$HOME/Software/ruby
$ gem install cocoapods
[...]
1 gem installed
$ export PATH=$PATH:$HOME/Sofware/ruby/bin
$ pod --version
0.37.2


PS:从这里开始,不使用原文demo,自己创建一个新工程 。

打开Xcode,创建一个新的singleView工程,然后关掉Xcode,是的关掉它。现在该创建你的podfile了。

安装你的第一个第三方组件

打开终端,并定位到刚刚创建的工程目录下:

cd ~/Path/To/Folder/Containing/PodDemo

然后输入命令:

pod init

这条命令会在你的工程下创建一个默认的Podfile。你将在Podfile里定义所用到的组件。

输入下面的命令,用Xcode打开Podfile:

open -a Xcode Podfile

默认的Podfile看起来像这样:

# Uncomment this line to define a global platform for your project
# platform :ios, "6.0"
 
target "PodDemo" do
 
end

将# platform:ios, "6.0"替换成,告诉CocoaPods你的工程是运行在iOS7下:

platform :ios, "7.0"

很多类库都有最低的iOS版本要求。如果你省略了这一行,CocoaPods会给一个默认的iOS版本(目前是iOS4.3)。

现在终于可以用CocoaPods加入你的第一个组件了。在Podfile中,target "PodDemo" do下面加上:

pod 'ASIHTTPRequest', '1.8.2'

这句话告诉CocoaPods你想要在工程中引入ASIHTTPRequest Version 1.8.2。

如果你想要使用更复杂的操作,请看 更多Podfile语法 。

保存并关闭Podfile。

现在告诉CocoaPods去安装这些组件到你的工程中。在终端中输入(确保在项目目录下):

pod install

你会看到如下的输出:

Analyzing dependencies
Downloading dependencies
Using ASIHTTPRequest (1.8.2)
Using Reachability (3.1.1)
Generating Pods project
Integrating client project

可能还会有:

[!] From now on use `ShowTracker.xcworkspace`.

此时CocoaPods在项目目录下创建了一个Pods文件夹----用于存放所有的第三方组件,以及PodDemo.xcworkspace。

正如上面的警告提醒,从现在开始,你必须使用PodDemo.xcworkspace来打开该项目。

如果Xcode项目还打开着,关掉它,打开PodDemo.xcworkspace。

测试ASIHTTPRequest

1.在ViewController.h中导入ASIHTTPRequest头文件:

#import <ASIHTTPRequest/ASIFormDataRequest.h>

2.给ViewController.h添加一个ASIFormDataRequest属性:

@property (nonatomic,strong)ASIFormDataRequest *request;

3.修改ViewController.m的ViewDidLoad方法:

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view, typically from a nib.
  
  NSURL *url = [NSURL URLWithString:@"http://www.weather.com.cn/data/sk/101010100.html"];
  self.request = [[ASIFormDataRequest alloc] initWithURL:url];
  self.request.requestMethod = @"GET";
  self.request.delegate = self;
  [self.request startAsynchronous];
}

4.在ViewController.m中添加ASIHTTPRequest代理方法:

- (void)requestFinished:(ASIHTTPRequest *)request
{
    NSArray *result = [NSJSONSerialization JSONObjectWithData:request.responseData options:NSJSONReadingMutableContainers error:nil];

    NSLog(@"%@",result);
}

运行代码,看到Console输入如下:

2014-10-15 14:08:24.734 PodDemo[7319:120294] {
  weatherinfo =	 {
    Radar = "JC_RADAR_AZ9010_JB";
    SD = "16%";
    WD = "\U5317\U98ce";
    WS = "4\U7ea7";
    WSE = 4;
    city = "\U5317\U4eac";
    cityid = 101010100;
    isRadar = 1;
    njd = "\U6682\U65e0\U5b9e\U51b5";
    qy = 1010;
    temp = 21;
    time = "13:55";
  };
}

至此,组件已经被成功的引入到你的工程中了!

添加更多Pods

既然你已经知道CocoaPods如何工作,下面只剩下一件事可做:添加更多的Pods!

不过,事实上。。。你应该在工程中引入尽量少的pods。虽然CocoaPods让升级组件变得更容易,但是你始终要不时地更新你自己的代码。长远来看,最好的方式是让这些组件在你的控制之内。

现在向你的工程添加2个组件。比起从命令行打开Podfile,现在你可以在workspace中找到这个文件并打开。添加:

pod 'SAMCategories', '0.5.2'
pod 'Nimbus/AttributedLabel', '1.2.0'

保存,然后安装引用(在终端中使用pod install)。

你是否注意到Nimbus/AttributedLabel和其他pod不一样,多了一个"/"?大的pods常常将他们的库拆分成核心模块和一些小的子模块。在这个例子中,“/”表示AttributedLabel是Nimbus的子模块。

如果你不熟悉这些类库,这里有两个例子:

sstoolk 是一个便捷的工具包,用于解决iOS开发者们经常遇到的问题。

Nimbus ,全称NimbusKit,是另一个很有用的工具包。

为了测试一切正常,编译项目。此时,你会看到有很多警告!

“等等,我还没有更改项目代码!”你可能会这么想。

不管什么时候,你通过CocoaPods添加一个引用,它的源码已经被加入到项目中了。当你编译项目时,它们也会一起被编译。

所以,如果你加入的引用有很多警告,甚至编译报错,很可能它已经不再被维护了。

遇到这种情况,你可以在 CocoaPods website 上查找一个替换的组件。同时你还能找到它们的详细信息,如网站链接,说明文档,等等。

我们这个实力,大部分的警告都来源于iOS7废弃了一些方法,你可以安全地无视掉它们。

为了让CocoaPods的引入不显示警告,在Podfile最上方加上:

inhibit_all_warnings!

重新运行pod install,编译项目,此时你应该看到警告已经不显示了。

PS: 对Podfile修改安装之后编译项目,可能会出现如下警告 :

The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

此时,正确的做法是:

I. Project Cleanup

  1. In the project navigator, select your project
  2. Select your target
  3. Remove all libPods*.a in  Linked Frameworks and Libraries

II. Update CocoaPods

  1. Launch Terminal and go to your project directory.
  2. Update CocoaPods using the command  pod install

注意,1.3很重要。

入门教程到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lpstoredev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值