Варианты сборки в проекте
Вопрос
Как ты организуешь сборки для разных окружений (dev, staging, prod) и типов (debug, release)?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.