CocoaPods使用上の注意事項
2736 ワード
CocoaPods使用上の注意事項
ネット上ではCocoaPodsの使い方についての文章が多すぎて、繰り返していないと思います.ここでは、私が使用中に出会った問題や心得を皆さんに共有したいと思います.
1、Podfile.lock
私のPodfile.lockの内容を切り取ると、私のAFNetworkingが2.6.3バージョンにロックされていることがわかります.
2、installとupdateの違い
Podfileに新しいライブラリを追加するには、
3、ライブラリのインストール後のリンクエラー
私たちのプロジェクトは途中でCocoaPodsに加入したので、プロジェクトプロジェクトプロジェクトは以前からAFNetworkingなどの有名なサードパーティライブラリを使っていました.CocoaPods導入後,コンパイルエンジニアリングにより,AFNetworking関連のリンクエラーが報告されていることが分かった.具体的なエラー内容は
ライブラリを参照する方法の問題ではないかと疑い始めたが、そうではないことに気づいた.実際の原因はother link flagsに
4、あるライブラリで発生した悪いエラー
この説明は大まかではないか.しかし、過程は実際に発生し、私に苦労させた.私たちのプッシュサービスはある光を使って、ずっと安定していましたが、以前はコードを直接導入する方法でした.podロードに変更した後、svnの使用に合わせて、他の同僚がpod installを実行している間に予想外のエラーが多く発生し、podエンジニアリングディレクトリの多くのフォルダがエラーで作成に成功しなかった.podfile削除後、pod installを再実行しても使いにくくなります..とても無言です.私は手動でTargets Support Filesディレクトリに入り、このライブラリに関連する構成コード(Pods.release.xcconfigとPods.debug.xcconfig)を見つけて、手動で削除します.どうにかなりました.
5、複数targetsのpodfile書き方
targetごとに同じpodの書き方を追加するのはあまり優雅ではありませんが、stackflowの投稿を見て、以下の書き方をお勧めします.
ネット上ではCocoaPodsの使い方についての文章が多すぎて、繰り返していないと思います.ここでは、私が使用中に出会った問題や心得を皆さんに共有したいと思います.
1、Podfile.lock
pod install
でサードパーティ製ライブラリのインストールが完了すると、CocoaPodsはPodfile.lockにライブラリを入れます.このファイルは重要です.ライブラリのバージョンをロックし、最も直接的な保護作用は、複数の人が共同で開発するときに、あなたのバージョンは1.0であり、私のバージョンは2.0であり、混乱した問題を防止することです.私のPodfile.lockの内容を切り取ると、私のAFNetworkingが2.6.3バージョンにロックされていることがわかります.
PODS:
- AFNetworking (2.6.3):
- AFNetworking/NSURLConnection (= 2.6.3)
- AFNetworking/NSURLSession (= 2.6.3)
- AFNetworking/Reachability (= 2.6.3)
- AFNetworking/Security (= 2.6.3)
- AFNetworking/Serialization (= 2.6.3)
- AFNetworking/UIKit (= 2.6.3)
- AFNetworking/NSURLConnection (2.6.3):
- AFNetworking/Reachability
- AFNetworking/Security
- AFNetworking/Serialization
- AFNetworking/NSURLSession (2.6.3):
- AFNetworking/Reachability
- AFNetworking/Security
- AFNetworking/Serialization
- AFNetworking/Reachability (2.6.3)
- AFNetworking/Security (2.6.3)
- AFNetworking/Serialization (2.6.3)
- AFNetworking/UIKit (2.6.3):
- AFNetworking/NSURLConnection
- AFNetworking/NSURLSession
2、installとupdateの違い
Podfileに新しいライブラリを追加するには、
pod install
ではなくpod update
を使用することをお勧めします.これにより、新しいライブラリのみをインストールし、既存のライブラリも同時に更新されません.あるpodまたはすべてのpodを更新したい場合だけ、pod update
を使用する必要があります.3、ライブラリのインストール後のリンクエラー
私たちのプロジェクトは途中でCocoaPodsに加入したので、プロジェクトプロジェクトプロジェクトは以前からAFNetworkingなどの有名なサードパーティライブラリを使っていました.CocoaPods導入後,コンパイルエンジニアリングにより,AFNetworking関連のリンクエラーが報告されていることが分かった.具体的なエラー内容は
Undefined symbols for architecture arm64
ライブラリを参照する方法の問題ではないかと疑い始めたが、そうではないことに気づいた.実際の原因はother link flagsに
-l"AFNetworking"
が欠けていることです.更新:参照されるライブラリが多くなり、インストールが完了するたびに手動でother link flagsに追加することはできません.検索すると、other link flagsオプションに$(inherited)
を追加すればいいことがわかりました.これにより、cocoapodsインストールライブラリを実行するたびに、リファレンスの作業を自動的に完了できます.4、あるライブラリで発生した悪いエラー
この説明は大まかではないか.しかし、過程は実際に発生し、私に苦労させた.私たちのプッシュサービスはある光を使って、ずっと安定していましたが、以前はコードを直接導入する方法でした.podロードに変更した後、svnの使用に合わせて、他の同僚がpod installを実行している間に予想外のエラーが多く発生し、podエンジニアリングディレクトリの多くのフォルダがエラーで作成に成功しなかった.podfile削除後、pod installを再実行しても使いにくくなります..とても無言です.私は手動でTargets Support Filesディレクトリに入り、このライブラリに関連する構成コード(Pods.release.xcconfigとPods.debug.xcconfig)を見つけて、手動で削除します.どうにかなりました.
5、複数targetsのpodfile書き方
targetごとに同じpodの書き方を追加するのはあまり優雅ではありませんが、stackflowの投稿を見て、以下の書き方をお勧めします.
platform :ios, '7.0'
def shared_pods
pod 'SDWebImage', '~>3.7'
pod 'TTTAttributedLabel'
end
target 'YourTarget1' do
shared_pods
end
target 'YourTarget2' do
shared_pods
end