web-dev-qa-db-fra.com

Définir la cible de déploiement du pod de CocoaPods

J'utilise CocoaPods pour gérer les dépendances dans mon projet. J'ai écrit 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

Ce fichier fonctionne bien avec CocoaPods 0.x mais je ne peux pas compiler le projet après avoir mis à jour CocoaPods 1.0. Après avoir couru 

pod update 

Je ne peux pas compiler mon projet avec une erreur:

/Users/<...>/Pods/KeepLayout/Sources/KeepAttribute.m:195:1: Impossible de synthétiser une propriété faible car la cible de déploiement actuelle ne prend pas en charge les références faibles.

J'ai vu que chaque bibliothèque est construite avec une cible de déploiement différente. Par exemple, KeepLayout est construit avec la cible de déploiement 4.3.

Comment puis-je déterminer la cible de génération pour chaque dépendance de pod? 

30
Andrew Romanov

Certaines versions de développement de CocoaPods (ainsi que les versions antérieures à 1.0) peuvent avoir propagé la cible de déploiement du projet jusqu'aux modules, mais il s'agit de ce n'est plus le cas dans la version 1.0 . Pour contourner ce problème, le développeur actuel le recommande à l'aide d'un hook post-installation.

Voici une approche de force brute pour imposer une cible de déploiement codée en dur pour chaque pod du projet Pods généré. Collez ceci à la fin de votre Podfile:

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

Les "pods" project ayant défini la cible de déploiement, il vous suffit de supprimer le déploiement cible de chaque cible de construction. Ajoutez ceci à la fin de votre Podfile

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

Inspiré par le github post et la réponse d'Alex Nauda.

7
DawnSong

1) Recherchez IPHONEOS_DEPLOYMENT_TARGET 

2) Modifier la cible de déploiement iOS

 enter image description here

0
Francesco