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:appstore # Creates build/project-1.0-Release-app_store.ipa
rake testflight:publish # Publishes build/project-1.0-Release-adhoc.ipa to testflight
По умолчанию версия продукта берется из Info.plist, но ее можно переопределить с помощью
Последний штрих – генерация правильного changelog'а для Testflight-публикации – остается домашним заданием :)