Xcode 3.2 предоставляет потрясающую новую функцию в меню Build, «Build and Archive», которая генерирует файл .ipa, подходящий для распространения Ad Hoc. Вы также можете открыть Организатор, перейти к разделу «Архивные приложения» и «Отправить приложение в iTunesConnect».
Есть ли способ использовать «Build and Archive» из командной строки (как часть сценария сборки)? Я предполагаю, что xcodebuild
это будет как-то связано, но man
страница, похоже, ничего об этом не говорит.
ОБНОВЛЕНИЕ Михаил Гринич запросил разъяснения; вот что именно вы не можете сделать с помощью сборок из командной строки, функции, которые вы можете делать ТОЛЬКО с Xcode Organizer после «Сборки и архивирования».
- Вы можете нажать «Поделиться приложением ...», чтобы поделиться своим IPA с бета-тестерами. Как указывает Гийом ниже, из-за некоторой магии XCode этот файл IPA не требует отдельно распространяемого файла .mobileprovision, который требуется установить бета-тестерам; это волшебно Никакой сценарий командной строки не может это сделать. Например, сценарий Arrix (представленный 1 мая) не соответствует этому требованию.
- Что еще более важно, после того, как вы протестировали сборку, вы можете нажать «Отправить приложение в iTunes Connect», чтобы отправить эту ТОЧНУЮ сборку в Apple, тот самый двоичный файл, который вы тестировали, без перекомпоновки. Это невозможно из командной строки, потому что подписание приложения является частью процесса сборки; вы можете подписывать биты для бета-тестирования Ad Hoc ИЛИ вы можете подписывать их для отправки в App Store, но не для обоих. Ни один IPA, построенный на командной строке, не может быть бета-тестирован на телефонах, а затем отправлен непосредственно в Apple.
Я бы хотел, чтобы кто-то пришел и доказал, что я не прав: обе эти функции прекрасно работают в графическом интерфейсе XCode и не могут быть воспроизведены из командной строки.
источник
xcodebuild
. Создание файла IPA просто включает в себя помещение приложения в каталог с именем «Payload», архивирование этого каталога и переименование его в MyAppName.ipa.Ответы:
Я нашел, как автоматизировать процесс сборки и архивирования из командной строки, я только что написал статью в блоге объясняющую, как вы можете этого добиться.
Команда, которую вы должны использовать
xcrun
:Вы найдете все детали в статье . Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать.
источник
RELEASE_BUILDDIR
должен быть абсолютный путь.-o "${ipa_path}"
должен быть абсолютным. В противном случае вы, вероятно, получитеerror: Unable to create '.../...ipa'
или это будет тихо проигнорировано создание. Черт возьми, я потратил пару часов.С Xcode 4.2 вы можете использовать флаг -scheme, чтобы сделать это:
После этой команды Архив появится в Xcode Organizer.
источник
archive
действие не учитывает никаких настроек, которые вы предоставляете с помощью этого вызова, кроме рабочего пространства и схемы - это просто стоило мне часов !xcode-select <path to Xcode.app>
-scheme <SchemeName>
»Архив
IPA Export ( обратите внимание на список параметров экспорта )
Для тех, кто не знает о exportOptions.plist, https://blog.bitrise.io/new-export-options-plist-in-xcode-9
Те, кто использовал это для создания проекта в инструментах CI / CD, таких как teamcity / jenkins, пожалуйста, убедитесь, что вы используете правильный xcode, установленный в агенте сборки для архивации и экспорта.
Вы можете использовать любой из двух вариантов для этого.
Вот скрипт командной строки для создания архива и пример IPA. У меня есть проект iPhone xcode, который находится в папке Desktop / MyiOSApp.
Выполните следующие команды одну за другой:
Это проверено с Xcode 5 и работает нормально для меня.
источник
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive
requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
Я использовал свой собственный скрипт для создания пакета ipa для специального распространения.
Скрипт также увеличивает номер версии. Вы можете удалить эту часть, если она не нужна. Надеюсь, поможет.
источник
xcodebuild
Инструмент может создавать и экспортировать архив продукции с -exportArchive флагом (по состоянию на Xcode 5). Шаг экспорта ранее был возможен только через интерфейс Xcode Organizer.Сначала заархивируйте ваше приложение:
Дано
$ARCHIVE_PATH
(путь к .xcarchive файлу ) экспортируйте приложение из архива одним из следующих :Файл .ipa для iOS :
Mac .app файл:
В обеих командах аргументы -exportProvisioningProfile и -exportSigningIdentity являются необязательными.
man xcodebuild
для деталей о семантике. В этих примерах в профиле обеспечения для сборки iOS указан профиль обеспечения распространения AdHoc, а в идентификаторе подписи для приложения Mac указан идентификатор разработчика для экспорта в качестве стороннего приложения (т.е. не распространяемого через Mac App Store).источник
-workspace
опцию в xcodebuild (и путь к рабочей области)?man xcodebuild
гласит: «Чтобы создать рабочее пространство Xcode, вы должны передать оба параметра -workspace и -scheme для определения сборки».Мы разработали приложение для iPad с XCode 4.2.1 и хотели интегрировать сборку в нашу непрерывную интеграцию (Jenkins) для распространения OTA. Вот решение, которое я придумал:
Затем Jenkins загружает файлы ipa, plist и html на наш веб-сервер.
Это шаблон plist:
Для этого необходимо импортировать сертификат распределения и профиль обеспечения в цепочку ключей назначенного пользователя.
источник
$WORKSPACE
вместо$PWD
генерацииAPP_PATH
Я нашел некоторые другие ответы здесь трудно начать. Эта статья сделала, если для меня. Некоторые пути, возможно, должны быть абсолютными, как упомянуто в других ответах.
Команда:
источник
Вы МОЖЕТЕ отказаться от сборки, как это делает XCode, так что вы можете протестировать и отправить тот же двоичный файл. Например, в моем сценарии (аналогичном приведенному выше) я создаю свою версию выпуска, подписанную как сборку AdHoc, затем архивирую ее как IPA для тестирования, затем подаю в отставку с моим сертификатом распространения и создаю zip-файл, который я и отправляю Яблоко. Соответствующая строка:
источник
Для Xcode 7 вас есть намного более простое решение. Единственная дополнительная работа заключается в том, что вам нужно создать файл конфигурации plist для экспорта архива.
(По сравнению с Xcode 6, в результатах
xcrun xcodebuild -help
,-exportFormat
и-exportProvisioningProfile
параметры больше не упоминаются; первый удаляется, а второй заменяется-exportOptionsPlist
.)Шаг 1 , измените каталог на папку, включающую файл .xcodeproject или .xcworkspace.
Шаг 2 , используйте Xcode или
/usr/libexec/PlistBuddy exportOptions.plist
создайте файл параметров экспорта. Кстати,xcrun xcodebuild -help
подскажет, какие ключи нужно вставить в файл plist.Шаг 3 , создайте файл .xcarchive (фактически, папку) следующим образом (каталог build / будет автоматически создан Xcode прямо сейчас),
Шаг 4 , экспортируйте как .ipa файл, как это, который отличается от Xcode6
Теперь вы получаете файл ipa в каталоге build /. Просто отправьте его в Apple App Store.
Кстати, файл ipa, созданный Xcode 7, намного больше, чем Xcode 6.
источник
-scheme
и-configuration
параметры определены , как подписать файл ИПС.Ниже я дал краткое описание шагов, которые необходимо выполнить, и параметров, которые нужно передать при создании ipa с использованием terrminal:
Перейдите в папку, которая содержит файл MyApp.xcodeproject в терминале
Используя приведенную ниже команду, вы получите все цели приложения
После выполнения вышеуказанной команды вы получите список целей, из которых вы должны выбрать конкретную цель, которую вы хотите сгенерировать .ipa
Приведенная выше команда создает проект и создает файл .app. Путь для поиска файла .app
./build/Release-iphoneos/MyApp.app
После успешного завершения сборки выполните следующую команду, чтобы сгенерировать .ipa приложения, используя Имя разработчика и Профиль обеспечения, используя приведенный ниже синтаксис:
Объяснение каждого параметра в приведенном выше синтаксисе:
источник
Xcode 8:
Формат IPA:
Экспортирует архив MyMobileApp.xcarchive в виде файла IPA по пути MyMobileApp.ipa с использованием профиля обеспечения MyMobileApp Distribution Profile.
Формат приложения:
Экспортирует архив MyMacApp.xcarchive в виде файла PKG по пути MyMacApp.pkg, используя удостоверение подписи катиона приложения приложения. Идентификатор разработчика. Приложение: Моя команда. Идентификатор подписи установщика Идентификатор разработчика Установщик: Моя команда неявно используется для подписи экспортируемого пакета.
Страница руководства по Xcodebuild
источник
Перейдите в папку, где находится ваш проект root и:
источник
Пройдя еще один шаг, загрузите в iTunesConnect через командную строку Xcode 7 ! (Предполагается, что вы начинаете с
.ipa
подписанного с правильным профилем выпуска и подписью удостоверения личности.)Введите
altool
интерфейс CLI для загрузчика приложений (docs
, стр. 38). Спрятанная глубоко в структуре Xcode.app, это удобная функция, которая позволяет загружать файлы непосредственно в ItunesConnect.Просто запустите,
$ altool --upload-app -f file -u username [-p password]
чтобы загрузить свою новоиспеченную.ipa
прямо в Apple. Пароль не является обязательным, и вам будет предложено ввести его, если вы не включите его в команду.Если на этапе проверки возникнут проблемы с приложением, консоль распечатает их.
Вероятно, вам придется экспортировать путь,
altool
если вы не хотите сохранять его местоположение.Это оно! Просто войдите на iTunesConnect.com и выберите новую сборку для тестирования с помощью testflight.
Последнее замечание: если вы получаете сообщение об ошибке
Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application
, вы можете следовать предложению в этом ответе SO , чтобы запустить символическую ссылку на правильное местоположение:источник
Улучшая ответ Винсента, я написал скрипт для этого:
xcodearchive
он позволяет вам архивировать (генерировать ipa) ваш проект через командную строку. Думайте об этом как о сестре
xcodebuild
командования, но для архивации.Код доступен на github: http://github.com/gcerquant/xcodearchive
Один из вариантов сценария - включить архивирование символов dSYM в архиве с метками времени. Нет оправдания тому, чтобы больше не хранить символы, и не иметь возможности символизировать журнал аварийного отказа, который вы можете получить позже.
источник
Как построить проект iOS с помощью команды?
&&
&&
Что такое ExportOptions.plist?
ExportOptions.plist требуется в Xcode. Позволяет указать некоторые параметры при создании файла ipa. Вы можете выбрать параметры в дружественном пользовательском интерфейсе, когда вы используете Xcode для архивирования своего приложения.
Важный : метод для выпуска и развития отличается в ExportOptions.plist
AppStore:
развитие
источник
попробуйте xctool, это замена для xcodebuild от Apple, которая упрощает создание и тестирование продуктов для iOS и Mac. Это особенно полезно для непрерывной интеграции. У него есть несколько дополнительных функций:
№ 3 чрезвычайно полезен. Я не могу, если кто-то может прочитать вывод консоли xcodebuild, я не могу, обычно он дает мне одну строку с 5000+ символами. Даже труднее читать, чем дипломную работу.
xctool: https://github.com/facebook/xctool
источник
если вы используете следующий инструмент: https://github.com/nomad/shenzhen
тогда эта задача очень проста:
источник
источник
После обновления до Xcode 8 я обнаружил, что корпоративный ipa генерирует
Так что я переключаюсь
xcodebuild -exportArchive
и все возвращается в норму.источник
Вы имеете в виду проверить / поделиться / отправить варианты? Я думаю, что они специфичны для XCode и не подходят для инструмента сборки из командной строки.
С некоторой сообразительностью, держу пари, вы могли бы сделать сценарий, чтобы сделать это для вас. Похоже, они просто хранятся
~/Library/MobileDevice/Archived Applications/
с UUDI и списком. Я не могу себе представить, что было бы так сложно перепроектировать валидатор.Процесс, который меня интересует, автоматизирует отправку сборок бета-тестерам. (Поскольку передача в App Store происходит нечасто, я не против делать это вручную, тем более что мне часто приходится добавлять новый текст описания.) Выполняя псевдо-сборку + архив с использованием интерфейса командной строки Xcode, я могу запускать автоматические сборки из каждого коммита кода, создавать файлы IPA со встроенными профилями обеспечения и отправлять их по электронной почте тестерам.
источник
xcodebuild
и делает IPA.