CocoaPods管理第三方开源组件,入门介绍

原文链接:Introduction to CocoaPods Tutorial

通过这个教程,你会学习使用一个很流行的第三方开源组件管理工具----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!

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很重要。

入门教程到此结束。

时间: 2024-11-10 01:09:03

CocoaPods管理第三方开源组件,入门介绍的相关文章

使用CocoaPods管理第三方开源类库

iOS开发中经常会用到许多第三方类库,比如AFNetworking.FMDB.JSONKit等等,使用CocoaPods这个工具就能很方便得对工程中用到的类库进行管理,包括自动下载配置以及更新. 首先需要下载安装CocoaPods,系统要求有ruby环境,至少OS X 10.9以后是自带ruby环境的(Python也自带了),使用"ruby -v"命令可以查看当前ruby版本. 配置过程如下: 1.ruby环境 不放心的话可以先确认下ruby环境,据说由于GFW的影响,大都把Ruby镜

使用cocoapods管理第三方开源库

git上的项目基本都可以用cocoapods导入 特别方便. 使用方法: 更新cocoapods : $ sudo gem update cocoapods 查询第三方库是否存在: $ pod search xxx 导入第三方库: 进入项目的根目录,并在根目录下创建一个名叫Podfile的文件(没有任何后缀): $ cd Desktop/CocoaPodsTest/ '进入项目根目录,根据自己项目实际目录'$ touch Podfile $ vim Podfile vim编辑 :wq退出 或者使

0519.使用CocoaPods管理第三方类库[效率]

项目目录 添加第三方框架后的项目目录如下图 为什么要用Cocoapods? iOS开发中常用的第三方库,比如: 1.FMDB:在使用SQLite是只需要加入libsqlite3.dylib依赖以及sqlite3.h头文件即可.但是原生的SQLiteAPI使用相当不友好,而FMDB是对一系列的SQLiteAPI进行封装的库. 2.AFNetworking:网络层框架,构建于NSURLConnection.NSOperation和其他Foundation技术之上. 3.JSONKit:仅次于系统提供

Xcode工程使用CocoaPods管理第三方库新建工程时出现异常

Xcode工程使用CocoaPods管理第三方库新建工程时出现错误工程使用CocoaPods管理第三方库,在新的目录update版本的时候出现如下问题 问题1描述: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 inst

cocoapods管理第三方类库

菜鸟程序员一个  如有讲解不正确的地方希望指正! 下面我们进入主题吧 在开发中,为了能在项目中高效率的使用第三方类库,我们请来了cocoapods管理大师 要想使用cocoapods 需要分以下几步实行: 1:CocoaPods是跑在Ruby的软件,安装可能需要几分钟,打开你的终端输入 sudo gem install cocoapods 如果成功 会有一个 Successfully installed cocoaPods的提示 然后输入 pod setup 如果显示Ruby环境不够新,那就来升

iOS CocoaPods自动管理第三方开源库

最近在开发中发现在项目中使用了好多第三方库,然而第三方更新的时候本地却不能及时更新.然而CocoaPods则可以管理第三方依赖包的更新,这些“体力活”会被节省好多时间,下面介绍一下CocoaPods的安装和使用 1.CocoaPods的安装 1.0.0. 一般都会先升级ruby中的gem命令行如下: 1.0.1. CocoaPods的安装如下异常简单: $ sudo gem install cocoapods $ pod setup 注意:pod setup在执行时,会输出Setting up

使用CocoaPods管理第三方框架

CocoaPods是什么?用于解决什么问题这里就不废话了,直接进入正题. 一,环境介绍 Xcode:7.3.1 Mac OS 10.11.4 二,准备工作 1,诸多教程中都提及:“在安装CocoaPods之前,首先要在本地安装好Ruby环境”.总之,我没有做这一步. 2,先在终端中输入 gem source -l // 如果之前没有配置过,应该会显示如下信息. *** CURRENT SOURCES *** https://rubygems.org/ 3,由于国内网络原因(you know th

CocoaPods管理第三方

之前听伟哥说用CocoaPods做第三方库的管理很方便,今天看了下自己做了下感觉确实不错.下面开始,Let's go!! 1.安装CocoaPods之前,先确保本地有Ruby环境,因为CocoaPods运行于Ruby之上,默认情况下,Mac是自带了Ruby环境的,可以通过命令行ruby -v查看当前Ruby的版本 2.安装CocoaPods 终端中输入 sudo gem install cocoapods 此时可能会因为一个叫做防火墙的东西屏蔽而报错,我们可以通过淘宝的Ruby镜像来访问Coco

iOS开发笔记 - 用CocoaPods管理第三方库

在iOS项目中使用第三方类库可以说是非常常见的事,但是要正确配置这些第三方库会非常的繁琐,还好我们有CocoaPods来做这件事情,就如同在Java的世界里有Maven和Gradle,当然Maven的作用不仅仅是第三依赖库管理.通过CocoaPods工具我们可以为项目添加被称为"Pods"的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本. ??CocoaPods意义体现在两个方面.第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段