我正在尝试为我们的应用开发项目设置Jenkins CI实例。我有工作,使用 Debug 配置运行逻辑和应用程序测试,但我正在努力构建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
。platform :ios, :deployment_target => "6.0"
在那一点上,我不知道还有什么可以尝试的。
答案 0 :(得分:3)
“构建输出目录”设置也可能导致此问题。
将“构建输出目录”的值从相对路径更改为完全指定的路径,为我修复了它。
E.g。而不是'MyOutputDirectory'使用'/ Users / Shared / Jenkins / home / jobs / JenkinsProject / workspace / MyOutputDirectory'
答案 1 :(得分:2)
问题可能是因为您有不同的(自定义)构建配置。
看看这个:
https://github.com/CocoaPods/CocoaPods/issues/121
尝试将以下搜索路径添加到"图书馆搜索路径" (对于所有配置)
$(SYMROOT)/Release$(EFFECTIVE_PLATFORM_NAME)
答案 2 :(得分:0)
您可以尝试选择您的Pods项目并设置Build Settings-> Build Active Architectures Only-> NO for Release and Debug,对Pods中的每个目标重复此操作。
答案 3 :(得分: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插件允许您声明额外的编译参数,您应该尝试这些。
答案 4 :(得分:-2)
如果您正在使用XCode 5,那么我认为this应该有帮助
基本上更新你的Gemfile(如果它不存在则创建一个)并添加:
gem 'cocoapods', :git => 'http://github.com/CocoaPods/CocoaPods', :branch => 'xcode-5-support'
gem 'xcodeproj', :git => 'http://github.com/CocoaPods/Xcodeproj', :branch => 'redacted-support'
如果你的Podfile中有config.build_settings['ARCHS'] = 'armv7'
这样的东西,不要忘记摆脱它,你也需要有armv7s。
希望这会有所帮助,因为它为我节省了几天的噩梦。