【问题标题】:Header file not found sometimes using Cocoapods HockeySDK有时使用 Cocoapods HockeySDK 找不到头文件
【发布时间】:2014-05-14 23:37:48
【问题描述】:

我有一个使用xcodebuild 命令行工具使用archive 操作的构建脚本。

  • 构建成功
    • 在我的机器上使用 xcode。
    • 在我的机器上使用构建脚本。
    • 在使用 xcode 的构建服务器上。
  • 构建失败
    • 在构建服务器上构建脚本。

失败与其中一个 pod 中缺少标头有关。 (恰好是 HockeySDK)。

=== BUILD TARGET Pods-HockeySDK OF PROJECT Pods ===
....
CompileC ... /Library/TeamCity/../Pods/HockeySDK/Classes/BITCrashReportTextFormatter.m:34:9: 
fatal error: 
  'CrashReporter/CrashReporter.h' file not found

该行是:

#import <CrashReporter/CrashReporter.h>

在文件中,(source is here)

/../MyApp/Pods/HockeySDK/Classes/BITCrashReportTextFormatter.m

实际的标头可以在这里的框架中找到:

/../MyApp/Pods/HockeySDK/Vendor/CrashReporter.framework/Versions/A/Headers/CrashReporter.h

我注意到 XCode 项目导航器中有两个指向该文件的链接,不确定这是否是线索:

所以我认为它是缺少标题搜索路径?但是,我已经运行了一个 pod install 并将更改推送到构建服务器。

我们正在使用 HockeySKD - 3.5.4(最新)。 The podspec 有一个使用这种语法的崩溃报告框架的链接(不确定它是如何工作的)。

s.ios.vendored_frameworks = 'Vendor/CrashReporter.framework'

pods 项目中的搜索路径如下所示:

【问题讨论】:

    标签: ios xcode cocoapods xcodebuild


    【解决方案1】:

    由于 TeamCity git checkout 导致 pod 头文件损坏,构建失败。

    修复将结帐模式从服务器上自动更改为代理上自动(需要选择显示高级)并为一个版本启用结帐时清理。

    【讨论】:

    • 有同样的问题。你是如何最终解决它的?您是否重新创建了您的 Pods 项目?
    • 是的,基本上只是对 repo 进行了核对并重新克隆了它——我添加了我添加的脚本来检测错误并从中恢复。
    • 这还没有为我解决。我认为 Hockey 的吊舱存在问题,正如其他地方所讨论的那样。
    • @DanyalAytekin - 我认为当我遇到这个问题时,它实际上影响了每个 pod。 IRC 已通过将 teamCity 结帐规则从服务器上自动更改为代理上自动并执行干净结帐来解决此问题。
    • @Robert 成功了!谢谢,我昨天整个时间都在解决这个问题。
    【解决方案2】:

    我遇到了这个确切的问题,但我无法通过将结帐选择为“自动代理”来解决它,因为我的仓库中有太多项目。我需要这个项目中的子项目,所以我必须依赖检查“自动在服务器上”。

    cocoapods 的问题在于,当您在 teamcity 上从 git 中检查符号链接时,它们会损坏。我添加了一个新的构建步骤来解决这个问题:

    rm /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Headers
    rm /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/HockeySDK
    rm /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Resources
    
    ln -s Versions/Current/Headers /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Headers
    ln -s Versions/Current/HockeySDK /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/HockeySDK
    ln -s Versions/A/Resources /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Resources
    
    rm /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/Current
    ln -s A /Git/YourCheckoutDir/Pods/HockeySDK/HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/Current
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 2012-08-13
      • 1970-01-01
      • 2019-09-22
      相关资源
      最近更新 更多