CocoaPods管理第三方開源組件,入門介紹

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   os   使用   ar   

原文連結: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/rakeOverwrite 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 dependenciesDownloading dependenciesUsing ASIHTTPRequest (1.8.2)Using Reachability (3.1.1)Generating Pods projectIntegrating 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很重要。

入門教程到此結束。

CocoaPods管理第三方開源組件,入門介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.