安装pod后,Pod/Header为空

Ale*_*kov 10 objective-c cocoapods swift

问题

我以前在我的项目(完全工作项目)中有一组功能性的Pod,直到最新的pod install运行,现在我的桥接头中提到的头文件中出现"找不到文件"的错误(这是一个带有Obj-的Swift项目C包括).做了一些研究后,似乎应该有标题的符号链接Pods/Headers,该目录对我来说是空的.但是,已经下载了pod本身并且Pods/[Lib]存在所有相应的目录.

最后的好国家

我在这个错误开始发生之前就已经改变的是为我正在引入的一个库指定:git:commit标记.然后我重新pod install开始看到"找不到文件"错误.那时我正在使用Cocoapods 0.39

当前状态

我尝试了其他堆栈溢出线程的一些解决方案,包括添加User Header Search Paths,没有效果(现在回到原始版本),并更新我的cocoapods.我目前的cocoapods版本现在是1.0.0.beta.6.除了我经历的额外麻烦,例如必须重写我的Podfile的部分以符合新标准,我现在似乎回到了相同的状态(所有库成功下载,但标题未能找到).

这是一个如何在桥接头中包含我的标头的示例:

// In this header, you should import all the public headers of your framework using statements like #import <MyKit/PublicHeader.h>
#import <CocoaLumberjack/CocoaLumberjack.h>
Run Code Online (Sandbox Code Playgroud)

这是我的Podfile的样子(我试图减少它以避免不相关的内容):

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
Run Code Online (Sandbox Code Playgroud)

更新

经过一番挖掘后,我发现罪魁祸首就是use_frameworks!命令,省略它(反过来删除Swift库,因为它们需要它们)导致Pods/Headers填充PrivatePublic目录,以及相关标题的符号链接.

在以前版本的cocoapods中并非如此,我仍然试图了解正在发生的事情,因为省略该命令对我来说不是一个可用的解决方法(考虑到我在我的应用程序中使用的Swift库).

更新2

这已经在评论中提到了,但为方便起见,我也把它放在这里.这似乎是由此线程中报告的错误引起的:https://github.com/CocoaPods/CocoaPods/issues/4605#issuecomment-208822149.该线程还提出了一些可能对某些人来说足够好的解决方法.对我来说,他们不是,所以我回到0.39.

nfe*_*s76 0

你尝试过这个设置吗?

target 'TargetProject' do

    pod 'CocoaLumberjack', '2.0.0'
    pod 'SwiftyJSON', '~> 2.3'
    pod 'Classy', :git => 'https://github.com/ClassyKit/Classy.git', :commit     => 'c319908f8bded62e268dfd48ee5d65329b819129'

end
Run Code Online (Sandbox Code Playgroud)

并添加了这个“.swift-version”吗?其中包含“3.0-GM-CANDIDATE”

我正在为 swift 3.0 使用这种设置