#はじめに
Cocoapodsが5月10日に1.0.0をリリースしました。
そこでチーム開発をしていたプロジェクトでエラーが発生したので、共有いたします。
#エラー内容
Cocoapodsにターゲット指定が必要になりました。
これまでPodfileは以下のように記載していました。
platform :ios,'9.0'
use_frameworks!
pod 'SwiftDate'
pod 'SlideMenuControllerSwift'
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'Firebase/Database'
pod 'Firebase'
pod 'Firebase/Auth'
これでFirebaseがアップデートされたことでpodのほうもアップデートしようと、pod update
のコマンドを打ったところ以下のようなエラーが表示されてしまいました。
[!] The dependency `SwiftDate` is not used in any concrete target.
The dependency `SlideMenuControllerSwift` is not used in any concrete target.
The dependency `Firebase/Core` is not used in any concrete target.
The dependency `Firebase/Messaging` is not used in any concrete target.
The dependency `Firebase/Database` is not used in any concrete target.
The dependency `Firebase` is not used in any concrete target.
The dependency `Firebase/Auth` is not used in any concrete target.
つまり、どのターゲットでもpodが使われていませんよと
#エラー対策
そこでターゲット指定を行いました。
Podfileにおいては、Podは以下のような形式でターゲットを指定します。
platform :ios,'9.0'
use_frameworks!
target 'ターゲット先(プロジェクト名やプロジェクトのテスト名)' do
# ここでpod 'hoge'と記載する
end
今回ではこのようにしました。
platform :ios,'9.0'
use_frameworks!
target 'ターゲット先(プロジェクト名やプロジェクトのテスト名' do
pod 'SwiftDate'
pod 'SlideMenuControllerSwift'
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'Firebase/Database'
pod 'Firebase'
pod 'Firebase/Auth'
end
#このようなことを防ぐために
ターゲットやオプション(platform指定など)を手書きするのは、ミスが起こりやすいですし、なにより面倒くさい。そこで、Cocoapodsにはpod init
という便利なコマンドが用意されていますので、かならず使いましょう。
pod init
を打つことで、Podfileが自動で生成され、さまざまなオプションもコメントアウトの形で提供されるので、絶対に使いましょう。
以下が、pod init
を打つことで生成されるPodfileです
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'Sample' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for Sample
target 'SampleTests' do
inherit! :search_paths
# Pods for testing
end
target 'SampleUITests' do
inherit! :search_paths
# Pods for testing
end
end
今回はSampleという名前のプロジェクトでpod init
を行いました。