14

我正在尝试为我们的应用程序开发项目设置一个 Jenkins CI 实例。我的工作使用调试配置运行逻辑和应用程序测试,但我正在努力构建 IPA,因为我在编译期间遇到链接错误。

ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)

该应用程序使用 Cocoapods,我正在使用 Jenkins XCode 插件进行构建。

我搜索了类似的问题并尝试/验证了一堆东西:

  • 我正在使用工作区。
  • pod install在 xcodebuild 步骤之前运行。
  • 我已经检查了项目本身的架构、目标和 Pod 是否相同——标准(armv7、armv7s) ——正如这个答案所建议的那样
  • 我从这个 GitHub 线程尝试了各种解决方案
  • 我根据这个答案和类似的答案尝试了派生数据位置的各种设置
  • Podfile 指定platform :ios, :deployment_target => "6.0"

在这一点上,我不知道还有什么可以尝试的。

4

5 回答 5

3

“构建输出目录”设置也可能导致此问题。

将“构建输出目录”的值从相对路径更改为完全指定的路径为我修复了它。

例如,使用 '/Users/Shared/Jenkins/home/jobs/JenkinsProject/workspace/MyOutputDirectory' 代替 'MyOutputDirectory'

于 2014-10-11T18:48:24.733 回答
2

问题可能是因为您有不同的(自定义)构建配置。

看看这个:

https://github.com/CocoaPods/CocoaPods/issues/121

尝试将以下搜索路径添加到“库搜索路径”(对于所有配置)

$(SYMROOT)/Release$(EFFECTIVE_PLATFORM_NAME)
于 2014-03-31T20:47:45.437 回答
0

您可以尝试选择您的 Pods 项目并设置 Build Settings->Build Active Architectures Only->NO 用于发布和调试,对 Pods 中的每个目标重复此操作。

于 2014-08-24T14:45:31.933 回答
0

我无法与 XCode 插件交谈,所以我的回答可能被认为有些反应迟钝,但这是我如何让它工作的。

我添加了一个如下所示的构建步骤:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer/
echo $WORKSPACE
cd "/Users/[jenkins-accountname]/.jenkins/jobs/[jobname]/workspace/[xcode project name]"
pod install
xcrun xcodebuild -workspace [your workspace (not project) name] -scheme [the build scheme to build] clean build -destination "platform=iOS,name=CurtsiPhone" -destination-timeout 120

-destination和-destination -timeout是成功的关键构建参数。我的项目只能在手机上构建,因为它使用了专门的库,所以我的手机必须插上电源才能让 XCode 找到它。如果您的项目将在模拟器中构建,您可能不需要它,但是我只有在明确指定目的地时才让它工作。

如果 XCode 插件允许你声明额外的编译参数,你应该试试这些。

于 2015-03-12T16:47:39.360 回答
-2

如果您使用的是 XCode 5,那么我认为应该会有所帮助

基本上更新您的 Gemfile (或创建一个,如果它不存在)并添加:

gem 'cocoapods', :git => 'http://github.com/CocoaPods/CocoaPods', :branch => 'xcode-5-support'
gem 'xcodeproj', :git => 'http://github.com/CocoaPods/Xcodeproj', :branch => 'redacted-support'

此外,如果您config.build_settings['ARCHS'] = 'armv7'的 Podfile 中有类似的内容,请不要忘记删除它,您也需要有 armv7s。

希望这会有所帮助,因为它拯救了我几天的噩梦。

于 2013-09-12T15:50:20.203 回答