137 votes

Définir un objectif de déploiement pour le 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 que j'ai mis à jour pour CocoaPods 1.0. Après j'ai couru

pod update 

Je ne peux pas compiler mon projet avec l'erreur:

/Utilisateurs/<...>/Pods/KeepLayout/Sources/KeepAttribute.m:195:1: Ne peut pas synthétiser la faiblesse de la propriété parce que le déploiement actuel de la cible ne prend pas en charge les références faibles

J'ai vu que chaque bibliothèque a été construite avec différents cible de déploiement. Par exemple KeepLayout est bâtie avec 4.3 cible de déploiement.

Comment je peux déterminer cible de génération pour chaque pod dépendance?

257voto

Alex Nauda Points 199

Bien que certaines versions de développement de CocoaPods (ainsi que les pré-versions 1.0) peut avoir propagé la cible de déploiement du projet vers le bas pour les gousses, ce n'est plus le cas de la 1.0. Pour contourner ce problème, le développeur recommande l'utilisation d'un post-point d'installation.

Voici une approche par force brute forcer un codées en dur cible de déploiement pour chaque pod dans le générés Gousses projet. Coller à 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

166voto

Dawn Song Points 21

Étant donné que le projet "pods" a défini une cible de déploiement, il vous suffit de supprimer chaque cible de déploiement de chaque cible.

 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 post github et la réponse d'Alex Nauda.

-2voto

Francesco Points 128

1) Recherchez IPHONEOS_DEPLOYMENT_TARGET

2) Modifier la cible de déploiement iOS

entrez la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X