2015-11-27 5 views
0

Я пытаюсь построить проекты iOS из командной строки как часть системы CI. Я намерен использовать команду xcodebuild, чтобы получить файл приложения, затем файл приложения будет предоставлен команде xcrun, чтобы получить подписанный файл ipa для распространения.Ошибка сборки xcodebuild с Xcode 7.1 и iOS 9.1 для проекта iOS с Cordova

Мои проекты используют 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> я получил следующее сообщение об ошибке три раза:

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.

Должен ли я установить что-то на Xcode в дополнение к параметрам, которые я использовал в команде xcodebuild из командной строки?

Заранее спасибо, Симона.

+0

У команды cordova есть команды для создания приложений, почему бы вам не использовать их вместо этого? – jcesarmobile

+0

Благодарим за предложение, однако я должен использовать инструменты командной строки Xcode. – Quake

ответ

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' 

Это решило мою проблему.

+1

Об этой ошибке: Ld /Users/confiz/Library/Developer/Xcode/DerivedData/CloudMessage-afevkkqtjcnmoddycvosdhbgoraa/Build/Intermediates/ArchiveIntermediates/LTDMessaging/IntermediateBuildFilesPath/CloudMessage.build/Release-iphoneos/LTDMessaging.build/Objects-normal/ arm64/LTD \ Messaging обычный arm64 –

Смежные вопросы