128. Fastlane для отправки скриншотов
Я уже рассказывал как мне нравится Xcode Cloud для публикации сборок - минимум настроек, все работает хорошо.
Недавно настроил публикацию скриншотов в пет-проекте с использованием fastlane
, и выключил воркфлоу в Xcode Cloud
, потому что:
⚠️ Он работает медленно - сборка на ноуте (с fastlane
) занимает меньше минуты, а в облаке это растягивается на 5 минут
⚠️ Для публикации скриншотов в любом случае нужно или делать ручную работу, или запустить fastlane
Публикация скриншотов через fastlane
[18:40:04]: Driving the lane 'ios upload_screenshots' 🚀 ... [18:40:09]: Starting with the upload of screenshots... [18:40:11]: Deleted 'ru APP_IPAD_PRO_3GEN_129' - (0.814763 secs) [18:40:11]: Deleted 'en-US APP_IPHONE_67' - (0.814563 secs) [18:40:11]: Deleted 'ru APP_IPHONE_67' - (0.837923 secs) [18:40:11]: Deleted 'en-US APP_IPAD_PRO_3GEN_129' - (0.915516 secs) [18:40:12]: Number of screenshots not deleted: 0 [18:40:12]: Successfully deleted all screenshots ... [18:40:17]: Uploaded './fastlane/screenshots/ru/iPhone 15 Pro Max-1-[18:40:21]: Uploaded './fastlane/screenshots/ru/iPhone 15 Pro Max-3-sortByDate.png'... (3.672329 secs) [✔] Waiting for all the screenshots to finish being processed... [18:40:28]: Successfully uploaded all screenshots [✔] Sorting screenshots uploaded... [18:40:29]: Successfully uploaded screenshots to App Store Connect
Итого
С момента запуска команды до окончания публикации и сортировки скриншотов прошло 26 секунд - это намного быстрее, чем вручную публиковать скриншоты для двух локализаций на iPad/iPhone, еще и в правильном порядке.
В appstoreconnect
для сохранения нужного порядка отображения скриншотов приходится загружать картинки по одной в желаемом порядке🙈
Важные нюансы
Выбор девайсов
Несмотря на возможность вручную загрузить скриншоты для нужных диагоналей с самых новых девайсов (iPhone 16 Pro Max, iPad M4), fastlane
так не может - нужно делать скриншоты на других девайсах, подробнее написал в ридми.
Если попытаться загрузить скриншоты для 16 Pro Max и iPad M4, будут ошибки типа таких:
[16:44:44]: 🚫 Invalid screenshots were detected! Here are the reasons: [16:44:44]: 🚫 Error: ./fastlane/screenshots/en-US/iPad Pro 13-inch (M4)-1-demoList.png - Invalid screen size (Actual size is 2064x2752. See the specifications to fix https://help.apple.com/app-store-connect/#/devd274dd925) ... [16:44:44]: 🚫 Error: ./fastlane/screenshots/ru/iPhone 16 Pro Max-3-sortByDate.png - Invalid screen size (Actual size is 1320x2868. See the specifications to fix https://help.apple.com/app-store-connect/#/devd274dd925)
Да, я прочитал документ по ссылке из логов с ошибкой, и я нашел там iPhone 16 Pro Max + iPad Pro (M4), но fastlane
не может их опубликовать 🤔
Настройка идентификатора команды
Если ваш аккаунт связан с несколькими командами разработки, то при настройке fastlane
нужно явно указать идентификатор команды в поле itc_team_id
, пример есть в Appfile
- даже если вы не знаете идентификатор, то при первом запуске команды для публикации скриншотов fastlane
сам предложит выбрать команду, там и можно скопировать идентификатор и поставить в Appfile
.
Лишние действия
По умолчанию fastlane
делает много всего в команде upload_to_app_store
, и лучше сразу выключить лишнее, например, публикацию бинарного файла приложения, запуск precheck
перед отправкой и т.д., более подробно про все эти настройки можно почитать в официальной документации к fastlane
.
Удаление старых скриншотов
Лучше сразу настроить overwrite_screenshots
на true
, чтобы после загрузки новых скриншотов не приходилось вручную удалять старые.
Заключение
Готовый fastfile
можно посмотреть тут.