web-dev-qa-db-ja.com

CocoaPodsのポッドの展開ターゲットを設定する

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デプロイメントターゲットでビルドされます。

ポッドの依存関係ごとにビルドターゲットを決定するにはどうすればよいですか?

41
Andrew Romanov

CocoaPodsの一部の開発バージョン(および1.0より前のバージョン)は、プロジェクトの展開ターゲットをポッドにまで伝播している可能性がありますが、これは 1.0ではそうではありません です。これを回避するには、 現在の開発者が推奨 インストール後フックを使用します。

生成されたPodsプロジェクトのすべてのPodにハードコードされた展開ターゲットを強制するブルートフォースアプローチを次に示します。これをPodfileendに貼り付けます:

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
90
Alex Nauda

「ポッド」projectがデプロイメントターゲットを設定しているため、必要なのはremove各ビルドターゲットのデプロイメントtarget。これをPodfileendに追加します

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の答えに触発されました。

20
DawnSong

1)IPHONEOS_DEPLOYMENT_TARGETを検索

2)iOS展開ターゲットの変更

enter image description here

4
Francesco