Pods / cabeçalhos vazios após a instalação do pod
Eu costumava ter um conjunto funcional de pods no meu projeto (projeto totalmente funcional) até o últimopod install
executar, agora estou recebendo erros de "arquivo não encontrado" para os cabeçalhos mencionados no meu cabeçalho de ponte (este é um projeto Swift com o Obj-C inclui). Depois de fazer algumas pesquisas, parecia que deveria haver links simbólicos para os cabeçalhos emPods/Headers
, esse diretório está vazio para mim. No entanto, os próprios pods foram baixados e todos os correspondentesPods/[Lib]
diretórios existem.
O que eu mudei antes que esse erro começou a ocorrer foi especificar:git
e:commit
sinalizadores para uma das bibliotecas que eu estava puxando.pod install
e começou a ver erros "arquivo não encontrado". Na época eu estava usando Cocoapods 0,39
Eu tentei algumas soluções de outros threads de estouro de pilha, incluindo adicionarUser Header Search Paths
, que não teve efeito (agora voltando ao original) e atualizando meus cocoapods. Minha versão atual do cocoapods agora é 1.0.0.beta.6. Além de dores de cabeça adicionais que experimentei, como ter que reescrever partes do meu Podfile para estar em conformidade com os novos padrões, agora pareço voltar ao mesmo estado (com todas as bibliotecas sendo baixadas com êxito, mas os cabeçalhos não são encontrados).
Aqui está um exemplo de como estou incluindo meus cabeçalhos no cabeçalho da ponte:
// In this header, you should import all the public headers of your framework using statements like #import <MyKit/PublicHeader.h>
#import <CocoaLumberjack/CocoaLumberjack.h>
E aqui está a aparência do meu Podfile (tentei reduzi-lo para evitar conteúdo 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
AtualizarDepois de mais algumas escavações, descobri que o culpado éuse_frameworks!
omitir (e, por sua vez, remover as bibliotecas Swift, porque é necessário para elas) causaPods/Headers
para ser preenchido comPrivate
ePublic
diretórios, juntamente com links simbólicos para os cabeçalhos relevantes.
Este não foi o caso na versão anterior do cocoapods, e ainda estou tentando entender o que está acontecendo, porque omitir esse comando não é uma solução útil para mim (considerando as bibliotecas Swift que uso no meu aplicativo).
Atualização 2Isso já é mencionado nos comentários, mas por conveniência, eu também estou colocando isso aqui. Isso parece ser causado por um bug relatado neste tópico:https://github.com/CocoaPods/CocoaPods/issues/4605#issuecomment-208822149. O segmento também sugere algumas soluções alternativas que podem ser boas o suficiente para alguns. Para mim, eles não eram, então voltei para 0,39.