Vainas / encabezados vacíos después de la instalación de la vaina
Solía tener un conjunto funcional de Pods en mi proyecto (proyecto totalmente funcional) hasta la última versiónpod install
ejecutar, ahora recibo errores de "archivo no encontrado" para los encabezados mencionados en mi encabezado de puente (este es un proyecto Swift con Obj-C incluido). Después de investigar un poco, parecía que debería haber enlaces simbólicos a los encabezados enPods/Headers
, ese directorio está vacío para mí. Sin embargo, los pods mismos se han descargado y todos los correspondientesPods/[Lib]
existen directorios.
Lo que he cambiado justo antes de que este error comenzara a ocurrir especificaba:git
y:commit
banderas para una de las bibliotecas que estaba ingresando. Luego volví a abrirpod install
y comencé a ver errores de "archivo no encontrado". En ese momento estaba usando Cocoapods 0.39
He probado algunas soluciones de otros subprocesos de desbordamiento de pila, incluida la adición deUser Header Search Paths
, que no tuvo ningún efecto (ahora vuelve al original) y actualicé mis cocoapods. Mi versión actual de cocoapods es ahora 1.0.0.beta.6. Además de los dolores de cabeza adicionales que experimenté, como tener que reescribir partes de mi Podfile para cumplir con los nuevos estándares, ahora parece que he vuelto al mismo estado (con todas las bibliotecas descargando con éxito, pero los encabezados no se encuentran).
Aquí hay un ejemplo de cómo incluyo mis encabezados en el encabezado de puente:
// In this header, you should import all the public headers of your framework using statements like #import <MyKit/PublicHeader.h>
#import <CocoaLumberjack/CocoaLumberjack.h>
Y así es como se ve mi Podfile (he intentado reducirlo para evitar contenido irrelevante):
source 'https://github.com/CocoaPods/Specs'
platform :ios, '8.0'
use_frameworks!
pod 'CocoaLumberjack', '2.0.0'
pod 'SwiftyJSON', '~> 2.3'
pod 'Classy', :git => 'https://github.com/ClassyKit/Classy.git', :commit => 'c319908f8bded62e268dfd48ee5d65329b819129'
workspace 'my.work-ios'
project 'mywork' # sdk
project 'Examples/example1' # sample project using sdk
project 'my.work-ios.xcodeproj' # placeholder for main project, not really in use
target 'UnitTests' do
pod 'Specta'
pod 'Expecta'
pod 'OCMock'
pod 'OHHTTPStubs'
end
# Copy acknowledgements to the Settings.bundle
post_install do | installer |
require 'fileutils'
pods_acknowledgements_path = 'Pods/Target Support Files/Pods/Pods-Acknowledgements.plist'
settings_bundle_path = Dir.glob("**/*Settings.bundle*").first
if File.file?(pods_acknowledgements_path)
puts 'Copying acknowledgements to Settings.bundle'
FileUtils.cp_r(pods_acknowledgements_path, "#{settings_bundle_path}/Acknowledgements.plist", :remove_destination => true)
end
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['OTHER_SWIFT_FLAGS'] = "-DLEGACY"
end
end
end
ActualizarDespués de cavar un poco más, descubrí que el culpable esuse_frameworks!
comando, omitirlo (y, a su vez, eliminar las bibliotecas Swift, porque es necesario para ellos) provocaPods/Headers
ser poblado conPrivate
yPublic
directorios, junto con enlaces simbólicos para los encabezados relevantes.
Este no era el caso en la versión anterior de cocoapods, y todavía estoy tratando de entender lo que está sucediendo, porque omitir ese comando no es una solución utilizable para mí (dadas las bibliotecas Swift que uso en mi aplicación).
Actualización 2Esto ya se menciona en los comentarios, pero por conveniencia, también lo estoy poniendo aquí. Esto parece ser causado por un error reportado en este hilo:https://github.com/CocoaPods/CocoaPods/issues/4605#issuecomment-208822149. El hilo también sugiere algunas soluciones alternativas que pueden ser lo suficientemente buenas para algunos. Para mí, no lo eran, así que volví a 0.39.