CocoaPods の Swift ライブラリを使えるようにする。
CocoaPods
CocoaPods がSwift に対応したと聞き、さっそく自分のプロジェクトでも使えるようにしてみました。
久しぶりにCocoaPods を使ったせいか、いろんなところでエラーが発生したので、その解消法が中心となります。OS は OS X Yosemite 10.10.1 です。
以前にCocoaPods を使ってみたときのお話はEZ-NET: CocoaPods を使ってオープンソースのライブラリをプロジェクトで簡単に管理する : Objective-C プログラミング に記しています。
Cocoapods 0.35 での Swift への対応方法
CocaPods 0.35 を Swift に対応させるには、次の準備が必要になるようでした。
- プロジェクトに
Gemfile
を用意する。 bundle install
を実行する。
そうして準備ができたら、普段通りに pod update
などを使って Swift 対応パッケージを更新できます。
用意する Gemfile
プロジェクトに用意するGemfile
は次の通りです。
source 'https://rubygems.org'
gem 'cocoapods', :git => 'https://github.com/CocoaPods/CocoaPods.git', :branch => 'swift'
gem 'cocoapods-core', :git => 'https://github.com/CocoaPods/Core.git'
gem 'xcodeproj', :git => 'https://github.com/CocoaPods/Xcodeproj.git'
gem 'claide', :git => 'https://github.com/CocoaPods/CLAide.git'
プロジェクトの更新方法
Gemfile
を用意したら、次のコマンドを実行します。
bundle install
このコマンドが正常終了すれば Swift 対応のCocoaPods を利用できるようになります。
Swift 対応
各プロジェクトごとにGemfile
を作ってbundle install
を実行しておけば、あとは従来通りの方法で CocoaPods の Swift ライブラリを利用できます。
たとえば、次のようなPodfile
を用意したとします。
source 'https://github.com/CocoaPods/Specs.git'
platform :osx, '10.10'
pod 'SwiftyJSON', :git => "https://github.com/orta/SwiftyJSON", :branch => "podspec"
これでpod install
やpod update
を行うと、該当するライブラリがフレームワークとして組み込まれ、すぐに利用できるようになります。
たとえば今回のSwiftyJSON の場合、名前空間が「SwiftyJSON」で定義されているので、これを使いたいコード内で、次のようにしてモジュールをインポートできます。
import SwiftyJSON
これで、このモジュールに含まれるオブジェクトをJSON
やSwiftyJSON.JSON
のようにして利用できます。
自分の環境でCocoaPods をSwift 対応させてみたところ…
自分の環境でも CocoaPods を Swift に対応させようと、上記の手順でbundle install
を実行したところで次のエラーが発生しました。
An error occurred while installing i18n (0.6.11), and Bundler cannot continue.
Make sure that `gem install i18n -v '0.6.11'` succeeds before bundling.
bundle install で失敗する
エラーメッセージの上に表示されていた警告には、次のメッセージが表示されていました。
Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems.org/gems/i18n-0.6.11.gem)
どうやらHTTPS
の証明書のチェックでエラーが発生している様子です。
サーバー証明書を更新する
ターミナルからrvm osx-ssl-certs status all
を実行してみたところ、次のような結果が得られました。
Certificates for /etc/openssl/cert.pem: Old.
どうやら証明書情報が古い様子なので、次のコマンドを実行して、証明書情報を更新してみました。
rvm osx-ssl-certs update all
これで証明書情報が更新されて、先ほどのrvm osx-ssl-certs status all
コマンドの出力結果もCertificates for /etc/openssl/cert.pem: Up to date.
になりました。
これで無事にbundle install
コマンドも成功するようになりました。
pod install で失敗する
rvm osx-ssl-certs status all
コマンドが成功したので、さっそくpod install
を実行してみたところ、次のエラーが発生しました。
[!] Invalid `Podfile` file: undefined method `source' for #<Pod::Podfile:0x007f9d9183fc08>. Updating CocoaPods might fix the issue.
そしてこのエラーは、用意しておいたPodfile
の次の行で発生している様子でした。
source 'https://github.com/CocoaPods/Specs.git'
とりあえずpod update
を実行してみたところ、処理が正常に終わった後で、次のメッセージがターミナルに表示されました。
CocoaPods 0.35.0 is available. To update use: sudo gem install cocoapods\n Setup completed (read-only access)
CocoaPods をアップデートする
どうやらCocoaPods のバージョンが古かったようで、次のコマンドを実行することで CocoaPods 0.35.0 をインストールできるようだったので、実行してみました。
sudo gem install cocoapods
そうしたところCocoaPods
が無事にアップデートされて、pod install
も成功するようになりました。