update post_install plugin org guides from create cocoapod ios xcode xcode7 cocoapods

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