有时使用Cocoapods HockeySDK找不到头文件

时间:2014-04-03 08:58:18

标签: ios xcode cocoapods xcodebuild

我使用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项目导航器中有2个指向该文件的链接,不确定这是否是线索:

Pods

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

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

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

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

search paths in the pods project

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我有这个确切的问题,但是我无法通过选择我的结帐来解决这个问题,并自动代理&#34;因为我的回购有太多的项目。我需要在这个项目中进行子项目,所以我必须依靠签出&#34;自动在服务器&#34 ;.

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

Build Step Setup