xcodebuild 构建失败 Xcode 7.1 和 iOS 9.1 对于 iOS 项目与 Cordova
xcodebuild build failed with Xcode 7.1 and iOS 9.1 for iOS project with Cordova
我正在尝试从命令行构建 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"
[exec]/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>
出现了3次以下错误:
ld: file not found:
/build/Release-iphoneos/libCordova.a clang: error:
linker command failed with exit code 1 (use -v to see invocation)
最后:
The following build commands failed: 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 failures)
所以文件libCordova.a
在文件夹中生成:
<project-folder>/CordovaLib/build/Release-iphoneos
它被搜索到:
<project-folder>/build/Release-iphoneos
我正在使用 Xcode 版本 7.1 (7B91b) 和 iOS 9.1。
除了我在命令行 xcodebuild
命令中使用的参数之外,我还应该在 Xcode 上设置一些东西吗?
提前致谢,西蒙。
我的项目来自 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'
这解决了我的问题。
我正在尝试从命令行构建 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"[exec]/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>
出现了3次以下错误:
ld: file not found: /build/Release-iphoneos/libCordova.a clang: error: linker command failed with exit code 1 (use -v to see invocation)
最后:
The following build commands failed: 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 failures)
所以文件libCordova.a
在文件夹中生成:
<project-folder>/CordovaLib/build/Release-iphoneos
它被搜索到:
<project-folder>/build/Release-iphoneos
我正在使用 Xcode 版本 7.1 (7B91b) 和 iOS 9.1。
除了我在命令行 xcodebuild
命令中使用的参数之外,我还应该在 Xcode 上设置一些东西吗?
提前致谢,西蒙。
我的项目来自 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'
这解决了我的问题。