#ios #iphone #xcode #cordova
#iOS #iPhone #xcode #кордова
Вопрос:
Я пытаюсь создать систему, которая может скомпилировать проект с учетом исходного кода (проект приложения Cordova SDK) и дополнительных параметров предоставления, аналогичных сборке PhoneGap. За кулисами я пытаюсь использовать xcodebuild
команду для создания окончательного IPA и возврата его пользователю. Все проекты, разработанные с использованием Cordova и подготовленные к компиляции с помощью XCode, выполняются следующими командами:
cordova platform add ios
cordova prepare ios
Проблема в том, что для этого xcodebuild
требуются схемы проекта, которые, согласно моему поиску по этому вопросу, генерируются только при открытии проекта с помощью графического интерфейса XCode.
Есть ли какой-либо способ создать схемы для проекта, используя только инструменты командной строки? Являются ли схемы одинаковыми для каждого проекта, чтобы я мог скопировать статический в каждый проект, который я хочу скомпилировать?
Я на самом деле не специалист по XCode или Mac, если на то пошло, поэтому я был бы рад получить четкое объяснение того, как и почему работает решение, если оно есть…
Редактировать:
Просто чтобы прояснить мои окончательные выводы:
Когда я открываю проект с помощью графического интерфейса XCode (дважды щелкните .xcodeproj), он генерирует схемы, а затем я могу xcodebuild
успешно использовать команду без каких-либо проблем. Но мне нужно, чтобы эта система была полностью автоматизирована, чтобы пользователь мог загружать свой проект, созданный с помощью Cordova framework, и чтобы эта система генерировала IPA для него, если он того пожелает. (Он также может выбрать другие платформы, поддерживаемые Cordova framework). В конечном итоге это похоже на сборку PhoneGap.
Комментарии:
1. С моей точки зрения, на самом деле нет способа создать приложение без использования Xcode. Но если вышеупомянутые команды работают, вы можете просто открыть
*.xcodeproj
файл двойным щелчком мыши в Xcode и запустить оттуда операцию сборки / архивирования. Если сборка уже выполнена успешно, самый большой шаг уже сделан! Имейте в виду, что вам необходимо подписать свое приложение с правильным профилем подготовки, в который уже включены все идентификаторы устройств, с которыми вы хотите протестировать свое приложение, иначе будет сложно поделиться ими с вашими тестировщиками (например, с помощью hockeyapp / testflight)2. @Sebastian Когда я открываю проект с помощью графического интерфейса XCode (дважды щелкните .xcodeproj), он генерирует схемы, а затем я могу
xcodebuild
успешно использовать команду без каких-либо проблем. Но мне нужно, чтобы эта система была полностью автоматизирована, чтобы пользователь мог загружать свой проект, созданный с помощью Cordova framework, и чтобы эта система генерировала IPA для него, если он того пожелает. (Он также может выбрать другие платформы, поддерживаемые Cordova framework)3. Затем используйте некоторую систему задач (например
grunt
, и откройте.xcodeproj
с помощью команды оболочки, подождите, пока схемы не будут сгенерированы, убейте xcode и запуститеxcodebuild
задачу, если ее необходимо полностью автоматизировать.
Ответ №1:
Вы можете генерировать схемы программно, используя скрипт сборки, который будет выполняться Cordova CLI перед сборкой для iOS. Я написал сообщение в блоге об этом здесь, но вот краткое изложение:
Я решил использовать рубиновый камень xcodeproj, вы можете получить это с помощью:
sudo gem install xcodeproj
Затем создайте сценарий подключения «fix_xcode_schemes.rb» в папке hooks вашего проекта Cordova, установите для него права доступа к файлам 755, чтобы он был исполняемым, и поместите это в сценарий:
#!/usr/bin/env ruby
require 'xcodeproj'
xcproj = Xcodeproj::Project.open("platforms/ios/schemedemo.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save
Настройте platforms/ios/schemedemo.xcodeproj в соответствии с именем вашего проекта.
Затем, чтобы запустить сценарий, отредактируйте свой проект config.xml и добавить:
<platform name="ios">
<hook type="after_platform_add" src="hooks/fix_xcode_schemes.rb" />
...
</platform>
Полный код и Github в сообщении в блоге, на которое я ссылался. Здесь я использую after_platform_add, поэтому интерфейс командной строки Cordova добавит схемы после добавления платформы iOS. Для существующего проекта вы можете поменять это на before_prepare или before_build, чтобы добавить схемы, если вы не хотите удалять и повторно добавлять платформу ios, чтобы использовать мой оригинальный пример. Документация по подключению Cordova находится здесь.