CocoaPodsを使用して、プロジェクトの依存関係を管理します。 Podfileを作成しました。
target 'MyApp' do
platform :ios, '8.0'
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
#use_frameworks!
# Pods for MyApp
pod 'KeepLayout', :git => 'https://github.com/iMartinKiss/KeepLayout', :tag => 'v1.6.0'
pod 'EasyMapping'
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
このファイルはCocoaPods 0.xで正常に機能しますが、CocoaPods 1.0に更新した後、プロジェクトをコンパイルできません。走った後
pod update
エラーでプロジェクトをコンパイルできません:
/Users/<...>/Pods/KeepLayout/Sources/KeepAttribute.m:195:1:現在の展開ターゲットが弱い参照をサポートしていないため、弱いプロパティを合成できません
すべてのライブラリが異なる展開ターゲットでビルドされているのを見てきました。たとえば、KeepLayoutは4.3デプロイメントターゲットでビルドされます。
ポッドの依存関係ごとにビルドターゲットを決定するにはどうすればよいですか?
CocoaPodsの一部の開発バージョン(および1.0より前のバージョン)は、プロジェクトの展開ターゲットをポッドにまで伝播している可能性がありますが、これは 1.0ではそうではありません です。これを回避するには、 現在の開発者が推奨 インストール後フックを使用します。
生成されたPodsプロジェクトのすべてのPodにハードコードされた展開ターゲットを強制するブルートフォースアプローチを次に示します。これをPodfile
のendに貼り付けます:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.2'
end
end
end
「ポッド」projectがデプロイメントターゲットを設定しているため、必要なのはremove各ビルドターゲットのデプロイメントtarget。これをPodfile
のendに追加します
post_install do |lib|
lib.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
github post とAlex Naudaの答えに触発されました。