зависает командная строка xcodebuild
На моем osx висит следующая команда:
xcodebuild -scheme myscheme clean archive -archivePath /tmp
Эта команда выдает две выходные строки, а затем зависает:
User defaults from command line:
IDEArchivePathOverride = /tmp
Теперь этот проект не имеет рабочей области, созданной из командной строки cordova (cordova build ios
). Единственный способ обойти это-открыть xcode и закрыть его. это создает рабочую область, а затем вышеприведенная команда выполняется успешно.
Испытывал ли кто-нибудь нечто подобное и знал ли выход из этого? Любой способ создать это рабочее пространство из командная строка?4 ответа:
У меня была та же проблема, и единственным способом ее решения было открыть проект из командной строки, подождать и закрыть его снова через определенное время.
open "My Project.xcodeproj" sleep 10 killall Xcode xcodebuild -scheme "My Project" clean archive "build/MyProject"
Не очень приятно, но работает на меня.
Попробуйте сделать схему "общей".
Это можно сделать, перейдя в раздел ' Управление схемами...- и поставил галочку "общий доступ".
Apple документирует этот процесс здесь: https://developer.apple.com/library/ios/recipes/xcode_help-scheme_editor/Articles/SchemeShare.html
Если у вас уже есть или вы хотите сделать Ruby доступным для вашей системы сборки, вы можете Использовать это решение.
Установите xcodeproj gem в вашей системе сборки
sudo gem install xcodeproj
А затем интегрируйте следующий скрипт ruby в свой проект (переименовав путь xcodeproj).
В статье объясняется, как сделать его частью крючка cordova, если вы это делаете,я просто позвонил ruby прямо из своей сборки Jenkins.#!/usr/bin/env ruby require 'xcodeproj' xcproj = Xcodeproj::Project.open("platforms/ios/schemedemo.xcodeproj") xcproj.recreate_user_schemes xcproj.save
Это работает, потому что когда вы воссоздавая файлы proj, вы уничтожаете схемы, поэтому вам нужно их воссоздать.
Я считаю, что xcodebuild зависает, потому что некоторые данные отсутствуют в проекте. Вы можете сделать шаблон для того, как эти данные выглядят, и использовать крюк, чтобы заполнить его, если это необходимо.
- cordova добавить платформу ios
- Кордова билд ...
- открытые платформы / ios / что угодно.xcodeproj в xcode
- создать xcuserdata_template
- платформы cp-R / ios / что угодно.xcodeproj/xcuserdata xcuserdata_template /
- Замените уникальный идентификатор в этом шаблоне на XXXXXXXXXX
- обновите свой крюк, который запускает xcodebuild
Шаг 7 Пример:
XCODE_PROJ=path/to/Whatever.xcodeproj # get the mysterious id ID=`grep "Whatever \*\/ = {" $XCODE_PROJ/project.pbxproj | \ grep -io "[-A-Z0-9]\{24\}"` mkdir -p $XCODE_PROJ/xcuserdata XCUSERDATAD=$XCODE_PROJ/xcuserdata/`whoami`.xcuserdatad if [ ! -d "$XCUSERDATAD" ]; then cp -R path/to/xcuserdata_template/username.xcuserdatad \ $XCUSERDATAD find $XCUSERDATAD -type f -exec sed -i '' -e "s/XXXXXXXXXX/$ID/g" {} \; fi xcodebuild ...