Волшебник страны Xcode
wox (Wizard Of Xcode) – восхительно удобная штучка для сборки iOS проектов из консоли, что весьма актуально для всяких автоматизаций.
Написана на ruby, установка
gem install wox
После этого создаем Rakefile, самый навороченный на данный момент пример:
require 'wox'
Wox::Tasks.create :info_plist => 'project-Info.plist', :sdk => 'iphoneos' do
build :debug, :configuration => 'Debug - Local Server'
build :release, :developer_certificate => 'iPhone Developer: Valerii Hiora (8GA39LD1DZ)', :configuration => 'Release' do
ipa :app_store, :provisioning_profile => 'App Store'
ipa :adhoc, :provisioning_profile => 'Ad Hoc' do
testflight :publish, :api_token => 'your_token',
:team_token => 'your_testers_team_token',
:notes => proc { File.read("CHANGELOG") },
:distribution_lists => %w[AlphaTesters],
:notify => true
end
end
end
Код в принципе понятен без особых комментариев, настроить можно абсолютно все – сертификаты, какие provisioning profiles использовать, можно даже сразу публиковать на Testflight (о нем писал раньше). Вложенные таски наследуют настройки родителей, т.е. testflight:publish будет собирать с использованием provisioning profile из ipa:adhoc и подписываться это будет сертификатом, указанным в build:release. В случае чего любую настройку можно переопределять.
Примеры использования:
Собрать дебажную версию:
rake build:debug
Подготовить ipa для заливки в AppStore:
rake ipa:appstore
Подготовить adhoc ipa и залить его на Testflight
rake testflight:publish
Посмотреть список всех доступных тасков:
$ rake -T
rake build:debug # Build customiphone 1.0 with Debug - Local Server configuration
rake build:release # Build customiphone 1.0 with Release configuration
rake info:configurations # List available configurations
rake info:sdks # List available sdks
rake info:targets # List project targets
rake ipa:adhoc # Creates build/project-1.0-Release-adhoc.ipa
rake ipa:app_store # Creates build/project-1.0-Release-app_store.ipa
rake testflight:publish # Publishes build/project-1.0-Release-adhoc.ipa to testflight
По умолчанию версия продукта берется из Info.plist, но ее можно переопределить с помощью
:version => 1.0.3
Последний штрих – генерация правильного changelog’а для Testflight-публикации – остается домашним заданием