ios - post_install - pod install version
Establecer destino de implementación para el pod de CocoaPods (2)
Uso CocoaPods para administrar dependencias en mi proyecto. He escrito 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
Este archivo funciona bien con CocoaPods 0.x pero no puedo compilar el proyecto después de haber actualizado a CocoaPods 1.0. Despues de correr
pod update
No puedo compilar mi proyecto con error:
/Users/<...>/Pods/KeepLayout/Sources/KeepAttribute.m:195:1: No se puede sintetizar propiedades débiles porque el objetivo de implementación actual no admite referencias débiles
He visto que cada biblioteca está construida con un objetivo de implementación diferente. Por ejemplo, KeepLayout está construido con un destino de implementación 4.3.
¿Cómo puedo determinar el objetivo de compilación para cada dependencia de pod?
Dado que el proyecto "pods" ha establecido el objetivo de implementación, solo debe eliminar cada destino de implementación de cada destino.
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
Inspirado por el post de github y la respuesta de Alex Nauda.
Si bien algunas versiones de desarrollo de CocoaPods (así como las versiones anteriores a la 1.0) pueden haber propagado el objetivo de implementación del proyecto a los pods, este ya no es el caso en la versión 1.0 . Para evitar esto, el desarrollador actual recomienda usar un gancho posterior a la instalación.
Este es un enfoque de fuerza bruta para forzar un objetivo de implementación codificado para cada pod en el proyecto Pods generado. Pega esto al final de tu 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