0

我正在尝试从命令行构建 iOS 项目作为 CI 系统的一部分。我打算使用xcodebuild命令获取一个 app 文件,然后将 app 文件提供给xcrun命令以获取一个签名的 ipa 文件进行分发。

我的项目使用位于文件夹中的Cordova<project-folder>/CordovaLib

在项目文件夹中,我从 Ant 脚本中执行了以下命令:

xcodebuild -target "<project-name>" -configuration Release clean build

CordovaLib 目标已成功构建,并生成了文件:

<project-folder>/CordovaLib/build/Release-iphoneos/libCordova.a

以下日志片段可以看到这一点:

[exec] CreateUniversalBinary build/Release-iphoneos/libCordova.a normal armv7\ armv7s\ arm64 [exec] cd <project-folder>/CordovaLib [exec] export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer /usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/quake/bin: Applications/tools/apache-ant-1.8.4/bin:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin"

[执行]/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static <project-folder>/CordovaLib/build/CordovaLib.build/Release-iphoneos/CordovaLib.build/Objects-normal/armv7/ libCordova.a <project-folder>/CordovaLib/build/CordovaLib.build/Release-iphoneos/CordovaLib.build/Objects-normal/armv7s/libCordova.a <project-folder>/CordovaLib/build/CordovaLib.build/Release-iphoneos/CordovaLib.build/Objects-normal/ arm64/libCordova.a -o <project-folder>/CordovaLib/build/Release-iphoneos/libCordova.a

在构建目标期间,<project-name>我收到以下错误三遍:

ld:找不到文件:/build/Release-iphoneos/libCordova.a clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

最后:

以下构建命令失败: Ld build/HelloWorldProjectHelloWorldIpad.build/Release-iphoneos/HelloWorldProjectHelloWorldIpad.build/Objects-normal/armv7/HelloWorld normal armv7 Ld build/HelloWorldProjectHelloWorldIpad.build/Release-iphoneos/HelloWorldProjectHelloWorldIpad.build/Objects-normal/armv7s /HelloWorld normal armv7s Ld build/HelloWorldProjectHelloWorldIpad.build/Release-iphoneos/HelloWorldProjectHelloWorldIpad.build/Objects-normal/arm64/HelloWorld normal arm64(3次失败)

所以文件libCordova.a是在文件夹中生成的:

<project-folder>/CordovaLib/build/Release-iphoneos

而是在以下位置进行了搜索:

<project-folder>/build/Release-iphoneos

我在 iOS 9.1 中使用 Xcode 版本 7.1 (7B91b)。

xcodebuild除了我在命令行命令中使用的参数之外,我还应该在 Xcode 上设置一些东西吗?

在此先感谢,西蒙娜。

4

1 回答 1

0

我的项目来自 MEAP IDE。我发现自动生成的项目文件project.pbxproj对链接器有这个设置:

OTHER_LDFLAGS=-force_load "$(BUILT_PRODUCTS_DIR)/libCordova.a" -Obj-C

因此,我以这种方式修改了 xcodebuild 命令调用:

xcodebuild -target "<project-name>" -configuration Release clean build 'OTHER_LDFLAGS=-force_load "$SRCROOT/CordovaLib/build/Release-iphoneos/libCordova.a" -Obj-C'

这解决了我的问题。

于 2015-12-06T22:45:49.497 回答