# Spec Delta ## Purpose Make-интерфейс разработчика: установка Android-клиента на выбранное устройство и обзор доступных целей сборки. ## ADDED Requirements ### Requirement: Установка Android-приложения через Make-цель Проект SHALL предоставлять Make-цель `install-android-app`, которая собирает debug-APK Android-клиента и устанавливает его на выбранное устройство. Повторный запуск SHALL переустанавливать приложение без ручного удаления. #### Scenario: Установка на устройство - **WHEN** цель запущена и устройство выбрано - **THEN** собирается debug-APK и устанавливается на это устройство #### Scenario: Повторная установка - **WHEN** приложение уже установлено и цель запущена снова - **THEN** установка завершается успешно без ручного удаления приложения ### Requirement: Выбор устройства для установки Цель установки SHALL брать устройство из явно заданного серийного номера, а при его отсутствии — из единственного подключённого устройства. Если подключено несколько устройств и серийный номер не задан, цель SHALL напечатать список устройств и SHALL не выполнять установку. #### Scenario: Серийный номер задан - **WHEN** задан серийный номер устройства - **THEN** приложение устанавливается именно на это устройство #### Scenario: Единственное устройство - **WHEN** серийный номер не задан и подключено ровно одно устройство - **THEN** приложение устанавливается на него #### Scenario: Несколько устройств без выбора - **WHEN** серийный номер не задан и подключено несколько устройств - **THEN** цель печатает список устройств, не выполняет установку и завершается ненулевым кодом #### Scenario: Нет устройств - **WHEN** не подключено ни одного устройства - **THEN** цель сообщает об ошибке и завершается ненулевым кодом ### Requirement: Обзор доступных Make-целей Голый `make` (без цели) SHALL печатать список доступных целей и SHALL не запускать сборку. Любая цель, включая сборку фронтенда, SHALL оставаться доступной по явному имени. #### Scenario: Голый make - **WHEN** `make` запущен без цели - **THEN** печатается список доступных целей, сборка не запускается #### Scenario: Явная цель - **WHEN** `make` запущен с именем цели, например `make frontend` - **THEN** выполняется именно эта цель