English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
一、什么是CocoaPods
1、为什么需要CocoaPods
在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson、AFNetworking、Reachability等等。使用这些库的时候通常需要:
下载开源库的源代码并引入工程
向工程中添加开源库使用到的framework
解决开源库和开源库以及开源库和工程之间的依赖关系、检查重复添加的framework等问题
如果开源库有更新的时候,还需要将工程中使用的开源库删除,重新执行前面的三个步骤,顿时头都大了。。。
自从有了CocoaPods以后,这些繁杂的工作就不再需要我们亲力亲为了,只需要我们做好少量的配置工作,CocoaPods会为我们做好一切!
2、什么是CocoaPods
CocoaPods는 우리가 제3자 의존 라이브러리를 관리하는 도구입니다. 그것은 라이브러리 간의 의존 관계를 해결하고, 라이브러리의 소스 코드를 다운로드하며, 이를 통해 Xcode 워크스페이스를 생성하여 이 제3자 라이브러리와 우리의 프로젝트를 연결하여 개발을 위해 사용할 수 있게 합니다.
CocoaPods를 사용하는 목적은 우리가 제3자 오픈소스 라이브러리를 자동화하고 중앙집중적으로 직관적으로 관리할 수 있도록 합니다.
二、安装CocoaPods
1安装
CocoaPods는 Ruby로 구현되었습니다. 사용하기 전에 먼저 Ruby 환경이 필요합니다. 幸운히 OS X 시스템은 기본적으로 Ruby를 실행할 수 있어, 다음 명령어만 실행하면 됩니다:
$ sudo gem install cocoapods
CocoaPods는 Ruby gem 패키지 형태로 설치됩니다. 설치 과정에서는 우리에게 rake를 업데이트할지 여부를 묻습니다. y를 입력하면 됩니다. 이는 rake gem 패키지가 설치 과정에서 더 세심하게 확인되고, 새 버전이 사용 가능하면 이전 옵션과 같은 옵션이 나타날 수 있습니다.
설치 과정이 끝나면, 다음 명령어를 실행합니다:
$ pod setup
오류가 발생하지 않으면, 모든 설치가 성공하였음을 의미합니다!
2、설치 과정에서 발생할 수 있는 문제
① install 명령어를 실행한 후 반응이 없는 경우
이는 Ruby의 기본 소스가 cocoapods.org을 사용하고 있으며, 국내에서 이 주소에 접근할 때 문제가 발생할 수 있습니다. 인터넷에서 제안하는 한 가지 해결 방법은 다음과 같습니다: far을 �obao의 것으로 대체합니다.
$ gem sources --remove https://rubygems.org/ //응답이 오면 다음 명령어를 입력합니다 $ gem sources -a http://ruby.taobao.org/
서버가 성공적으로 대체되었는지 확인하려면 다음 명령어를 실행할 수 있습니다:
$ gem sources -l
정상적인 출력은 다음과 같습니다:
*** CURRENT SOURCES *** http://ruby.taobao.org/
② gem 버전이 너무 오래된 경우
gem은 Ruby 라이브러리와 프로그램을 관리하는 표준 패키지입니다. 그 버전이 너무 낮으면 설치가 실패할 수도 있습니다. 해결 방법은 자연스럽게 gem을 업그레이드하는 것이며, 다음 명령어를 실행하면 됩니다:
$ sudo gem update --system
③ 설치가 완료되면, pod setup 명령어를 실행할 때 오류가 발생합니다:
/사용자/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError) from /사용자/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec' from /사용자/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem' from /사용자/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>'
이것은 경로 설정 문제입니다. 다음 명령어를 실행하여 해결할 수 있습니다:
$ rvm use ruby-1.9.3-p448
이 문제를 해결합니다.
3、CocoaPods 업그레이드
업그레이드는 매우 간단합니다. 다시 설치 명령어를 실행하면 됩니다:
$ sudo gem install cocoapods
필요한 것은 고려해야 합니다. 설치할 때 sudo를 사용하면, 업그레이드할 때도 같은 키워드를 사용해야 합니다. 그렇지 않으면 업그레이드가 끝나고 다시 경로 불일치 문제가 발생할 수 있습니다.
3. CocoaPods 사용법
이전 과정이 모두 성공적으로 진행되었으면, CocoaPods의 신비로움을 경험할 수 있습니다. 다음 단계를 거쳐야 합니다:
이 과정을 보여주기 위해 CocoaPodsTest라는 프로젝트를 생성했습니다.
1또는 Podfile 생성
CocoaPods는 모든 것이 Podfile이라는 파일에서 시작됩니다. 이 파일을 먼저 생성해야 합니다. 개인적인 습관에 따라 명령어 프롬프트를 사용하며, 저는 다음과 같이 합니다:
$ cd /사용자/wangzz/데스크톱/CocoaPodsTest $ touch Podfile
먼저 공사 루트 디렉토리에 접근한 후 비어 있는 Podfile 파일을 생성합니다. 생성된 디렉토리 구조는 아래 그림과 같습니다:
(PS: Podfile 파일은 공사 루트 디렉토리에 위치하지 않을 수도 있으며, 그 경우 조금 더 복잡해질 수 있습니다. 다음 기사에서 설명할 것입니다. 주목해 주세요.)
2또는 Podfile 편집
필요에 따라 Podfile 파일에 사용할 제3자 라이브러리를 기록할 수 있습니다. SBJson, AFNetworking, Reachability 세 개의 라이브러리를 예로 들어, 제 Podfile 내용은 다음과 같습니다:
platform :ios pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0'
3또는 가져오기 명령어 실행
모든 준비 작업이 완료되면, 제3자 라이브러리를 가져오기 시작합니다:
$ cd /사용자/wangzz/데스크톱/CocoaPodsTest $ pod install
먼저 공사 루트 디렉토리에 접근한 후 pod install 명령어를 실행하면 CocoaPods가 우리의 원본 코드 다운로드, 의존성 설정, 필요한 프레임워크 포함 등 여러 가지 작업을 시작합니다. 명령어 실행 결과는 아래와 같습니다:
의존성 분석 의존성 다운로드 Installing AFNetworking (2.1.0) Installing JSONKit (1.5pre) Installing Reachability (3.0.0) Pods 프로젝트 생성 클라이언트 프로젝트 통합 [!] From now on use `CocoaPodsTest.xcworkspace`.
이는 pod install 명령어가 성공적으로 실행되었음을 의미합니다. 그럼 공사 루트 디렉토리에서 발생한 변화를 확인해 보겠습니다. 아래 그림과 같이:
공사의 루트 디렉토리에 세 가지 새로운 것들이 추가되었습니다: CocoaPodsTest.xcworkspace, Podfile.lock 파일, 그리고 Pods 디렉토리.
(PS: 길이 제한으로 인해 Podfile.lock 파일은 다음 기사에서 소개할 예정입니다. 많은 관심 부탁드립니다。)
pod install 명령어를 실행한 후 출력된 내용의 마지막 줄을 다시 보겠습니다:
[!] From now on use `CocoaPodsTest.xcworkspace`.
알림: 이제 CocoaPodsTest.xcworkspace 파일을 사용하여 개발해야 합니다.
프로젝트의 변화에 대해 몇 가지 설명이 필요합니다:
제3자 라이브러리는 우리의 실제 프로젝트에 사용할 수 있는 스태틱 라이브러리로 컴파일됩니다.
CocoaPods는 모든 제3자 라이브러리를 target 방식으로 구성하여 'Pods'라는 프로젝트로 만들고, 이 프로젝트는 새로 생성된 Pods 디렉토리에 위치합니다. 전체 제3자 라이브러리 프로젝트는 우리의 CocoaPodsTest 프로젝트에 사용할 수 있는 libPods.a라는 이름의 스태틱 라이브러리를 생성합니다.
우리의 프로젝트와 제3자 라이브러리는 새로 생성된 workspace로 관리됩니다.
프로젝트와 제3자 라이브러리를 직관적으로 관리하기 위해 CocoaPodsTest 프로젝트와 Pods 프로젝트가 workspace 형태로 조직되고 관리됩니다. 바로 이제 본 CocoaPodsTest.xcworkspace 파일을 보았습니다.
원래 프로젝트 설정이 변경되었습니다. 이제 원래 프로젝트 파일을 열어 컴파일하면 오류가 발생합니다. 새로 생성된 workspace를 사용하여 프로젝트 관리를 수행해야 합니다.
CocoaPodsTest.xcworkspace를 엽니다. 인터페이스는 다음과 같습니다:
프로젝트의 디렉토리 구조는 매우 명확합니다.
최근 추가한 제3자 라이브러리 헤더 파일을 프로젝트에 참조하고 컴파일 작업을 수행하면 성공적으로 완료됩니다!
이제 CocoaPods 사용법에 대한 부분이 끝났습니다. 앞으로 CocoaPods의 더 깊은 내용을 다루기 위해 다른 부분을 소개하려고 합니다. 많은 관심 부탁드립니다.
제4장, 참고 자료
1、http://code4app.com/article/cocoapods-install-usage
2、http://cocoapods.org/