Как выполнить проверку приложений для iOS из командной строки
Можно ли выполнить локальную проверку для приложений iOS (которые можно увидеть в функции "Организатор в архивах" ) через командную строку?
UPDATE: просто для уточнения - цель состоит в том, чтобы в конечном итоге сделать эту валидацию частью процесса непрерывной интеграции для моих приложений iOS.
Ответы
Ответ 1
В прошлом я использовал эту команду:
xcrun -sdk iphoneos Validation /path/to/MyApp.app or /path/to/MyApp.ipa
Это проверит коды, размеры иконок и т.д. Я не уверен, что приложение Xcode Organizer или Application Loader выполняет другую проверку в дополнение к этому инструменту, а сам инструмент имеет нулевые флажки для справки или командной строки, которые я могу найти.
UPDATE
Этот вопрос побудил меня копать немного глубже. При запуске инструмента strings
отображаются следующие переключатели:
-verbose
-upload
-warnings
-errors
-online
Параметр -online
, по-видимому, будет проверять двоичный файл для первого доступного приложения в iTunes connect, но я не понял, как передать имя пользователя/пароль команде. Однако я предполагаю, что для непрерывной интеграции вы, вероятно, хотите только локальную проверку.
Ответ 2
Вы можете проверить из командной строки с помощью команды:
xcrun -sdk iphoneos Validation /path/to/App.{app or ipa}
Немного неясно, какие проверки он выполняет, но, по-видимому, он делает как минимум код подписи и размеры значков.
В дополнение к локальной проверке возможно выполнить онлайн-проверку (но только для пакетов IPA):
xcrun -sdk iphoneos Validation -verbose -online /path/to/App.ipa
Для этого вам необходимо иметь учетные данные iTunes Connect, хранящиеся в специальной записи на вашей цепочке ключей. Чтобы создать эту запись:
- Откройте приложение Access Keychain Access;
- Создайте новый элемент пароля (Файл > Новый элемент пароля...)
- Брелок Имя элемента:
Xcode:itunesconnect.apple.com
- Имя учетной записи/пароль: ваши учетные данные для iTunes Connect
Онлайн-проверка кажется довольно грубой, но выполняет все проверки, которые в противном случае выполнялись бы с проверкой архива с помощью окна "Организатор" в Xcode. К сожалению, похоже, что при отказе не задан ненулевой код выхода, что означает, что выведение скрепок для обнаружения ошибок. Моя текущая эвристика для обнаружения отказа - это наличие любого выхода после строки Performing online validation...
.
Учитывая отсутствие документации, она почти наверняка не поддерживается.
Ответ 3
Если вы хотите только проверить подписанный файл ipa, есть инструмент для его выполнения altool
$ /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -h
Copyright (c) 2009-2015, Apple Inc. Version 1.1
Usage: altool --validate-app -f file -t platform -u username [-p password]
altool --upload-app -f file -t platform -u username -p password
-f, --file Filename.
-t, --type Type/Platform: osx, ios.
-u, --username Username. Required to connect for validation and upload.
-p, --password Password. Required if username specified. Password is read from stdin if one is not supplied.
May use @keychain: or @env: prefixes followed by the keychain or environment variable lookup name.
e.g. -p @env:SECRET which would use the value in the SECRET environment variable.
-v, --validate-app Validate an app archive. The username, password, and file path to app archive are required.
--upload-app Uploads the given app archive. The username, password, and file path to app archive are required.
--output-format [xml | normal] 'xml' displays error output in a structured format; 'normal' outputs in an unstructured format (default)
-h, --help Display this output.
Например,
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -v -f APP.ipa -u [email protected] -p password
Ответ 4
Вы можете проверить приложение с помощью команды altool, как показано ниже:
./altool --validate-app -f < 'ipaFile' >