Создание IP-адреса из проекта Cordova с помощью команды xcodebuild

#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 находится здесь.