it-swarm.com.de

Legen Sie das Implementierungsziel für den Pod von CocoaPods fest

Ich verwende CocoaPods, um Abhängigkeiten in meinem Projekt zu verwalten. Ich habe Podfile geschrieben: 

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

Diese Datei funktioniert gut mit CocoaPods 0.x, aber ich kann kein Projekt kompilieren, nachdem ich auf CocoaPods 1.0 aktualisiert habe. Nachdem ich gerannt bin 

pod update 

Ich kann mein Projekt nicht mit einem Fehler kompilieren:

/Users/<...>/Pods/KeepLayout/Sources/KeepAttribute.m:195:1: Schwache Eigenschaft kann nicht synthetisiert werden, da das aktuelle Implementierungsziel keine schwachen Verweise unterstützt

Ich habe gesehen, dass jede Bibliothek mit unterschiedlichen Implementierungszielen erstellt wird. Zum Beispiel wird KeepLayout mit dem Implementierungsziel 4.3 erstellt.

Wie kann ich das Build-Ziel für jede Pod-Abhängigkeit ermitteln? 

30
Andrew Romanov

Während einige Entwicklungsversionen von CocoaPods (sowie Versionen vor Version 1.0) das Implementierungsziel des Projekts möglicherweise auf die Pods übertragen haben, ist dies nicht mehr in 1.0 . Um dies zu umgehen, verwenden der aktuelle Entwickler empfiehlt einen Post-Install-Hook.

Hier ist ein brutaler Ansatz, um für jeden Pod im generierten Pods-Projekt ein hartcodiertes Implementierungsziel zu erzwingen. Fügen Sie dies am end Ihrer Podfile ein:

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

Da in den "pods" project das Implementierungsziel festgelegt wurde, müssen Sie lediglich remove das Deployment-target von jedem Buildziel entfernen. Hängen Sie dies an das Ende Ihrer Podfile an.

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

Inspiriert von der github post und der Antwort von Alex Nauda.

7
DawnSong

1) Suchen Sie nach IPHONEOS_DEPLOYMENT_TARGET 

2) Ändern Sie das iOS-Bereitstellungsziel

 enter image description here

0
Francesco