Ответ вслух Middle Сборка Gradle обновлено

Варианты сборки в проекте

Вопрос

Как ты организуешь сборки для разных окружений (dev, staging, prod) и типов (debug, release)?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Типы сборки отвечают за способ: в debug отладка и никакой минификации, в release R8, сжатие ресурсов и подпись, иногда отдельный benchmark для замеров.

Что должно прозвучать в ответе

  • Build types debug и release: оптимизация, подпись, отладка

  • Flavors по окружению: свой applicationIdSuffix, адрес сервера через buildConfigField

  • Source sets для отличающегося кода и ресурсов

  • Секреты и ключи подписи не в репозитории, через переменные CI

  • debugImplementation для инструментов вроде LeakCanary

Что могут спросить следом

  • Как поставить на одно устройство prod и staging одновременно?
  • Где хранить ключ подписи?

Разбор

Типы сборки отвечают за способ: в debug отладка и никакой минификации, в release R8, сжатие ресурсов и подпись, иногда отдельный benchmark для замеров. Окружения делаю флейворами одного измерения, например env со значениями dev, staging и prod: у каждого свой applicationIdSuffix, чтобы на одном телефоне стояли и боевая, и тестовая версии, своё имя и иконка, а адрес сервера через buildConfigField. Если код окружений отличается, кладу его в отдельные source sets. Инструменты отладки вроде LeakCanary подключаю через debugImplementation, чтобы они не попали в релиз. Ключи подписи и секреты не храню в репозитории: в CI они приходят из защищённых переменных, а в Play включён Play App Signing.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.