Добавить в корзинуПозвонить
Найти в Дзене
Программы от меня

Моя первая программа на Android Studio: как я чуть не проклял Гугл, кота и создателя Gradle

Ожидание: пишем «Hello World» за 5 минут. Реальность: 3 часа ада, седой волос и глубокая ненависть к эмулятору. Знаете, есть вещи, которые в ютуб-туториалах выглядят красиво и легко. Например, приготовить рататуй, сесть на шпагат или создать своё первое приложение для Android. «Всего-то», — говорит жизнерадостный индус с акцентом, — «скачай Android Studio, создай проект, нажми Run, и вуаля!» Вуаля, блин. Шаг 1. Установка — уже подвиг Качаю Studio. 1.2 гигабайта. Интернет не самый быстрый, но я полон энтузиазма. Пока качается, успеваю выпить кофе, прочитать новости и вспомнить, зачем я вообще это затеял. Хочу своё приложение! Ну там, «Супер-фонарик-с-калькулятором-и-шутками-про-Жириновского». Установка запускается. Мастер просит выбрать компоненты. Я выбираю всё, потому что я же умный. Через 20 минут установщик вежливо сообщает, что на диске C: осталось 500 мегабайт. Пришлось удалять старые игры, сериалы и, кажется, свою сознательность. Шаг 2. Создание проекта — первый звоночек Запу

Ожидание: пишем «Hello World» за 5 минут. Реальность: 3 часа ада, седой волос и глубокая ненависть к эмулятору.

Знаете, есть вещи, которые в ютуб-туториалах выглядят красиво и легко. Например, приготовить рататуй, сесть на шпагат или создать своё первое приложение для Android.

«Всего-то», — говорит жизнерадостный индус с акцентом, — «скачай Android Studio, создай проект, нажми Run, и вуаля!» Вуаля, блин.

-2

Шаг 1. Установка — уже подвиг

Качаю Studio. 1.2 гигабайта. Интернет не самый быстрый, но я полон энтузиазма. Пока качается, успеваю выпить кофе, прочитать новости и вспомнить, зачем я вообще это затеял. Хочу своё приложение! Ну там, «Супер-фонарик-с-калькулятором-и-шутками-про-Жириновского».

Установка запускается. Мастер просит выбрать компоненты. Я выбираю всё, потому что я же умный. Через 20 минут установщик вежливо сообщает, что на диске C: осталось 500 мегабайт. Пришлось удалять старые игры, сериалы и, кажется, свою сознательность.

-3

Шаг 2. Создание проекта — первый звоночек

Запускаю. Встречает меня не ласковая IDE, а терминал, который что-то долго грузит. Gradle, сука ты такая. Я ещё не знал, что это имя будет сниться мне в кошмарах.

Создаю новый проект. Выбираю «Empty Activity». Называю «MyFirstApp». Всё как в туториале. Жму Finish.

И тут начинается… Музыка! Нет, не победная. Это звук Building project Gradle. Полоска загрузки ползёт со скоростью улитки, которая решила переползти через Эверест. Студия скачивает интернет. Качает какую-то хрень под названием *gradle-8.7-bin.zip*. Я смотрю на часы: прошло 15 минут.

— Ну, — думаю, — сейчас-то всё заработает.

-4

Шаг 3. Интерфейс: космос, который не понять

Открывается редактор. Слева — куча папок. Manifest, java (первая папка), java (generated), res, drawable, mipmap, values. Я чувствую себя обезьяной, которой дали пульт от МКС.

Главное окно — это activity_main.xml. Там какая-то схема с «Hello World!» посередине. Красота! Дизайн, макеты, констрейнты... Я аккуратно перетаскиваю кнопку. Она не туда встаёт. Я пытаюсь её выровнять — она улетает в левый верхний угол и отказывается возвращаться.

Ладно. Решаю не трогать дизайн. Главное — запустить!

-5

Шаг 4. Эмулятор — портал в ад

Жму зелёную кнопку «Run». Студия задумывается. Gradle снова что-то синхронизирует. Потом вылезает окно: «Select Deployment Target». У меня нет телефона. Создаю виртуальный девайс. Выбираю Pixel 6. API 34. Скачиваю системный образ. Ещё 20 минут. Кот смотрит на меня с осуждением.

Наконец, эмулятор запускается. Появляется окно с телефоном. Он грузится… и грузится… и грузится. Я успеваю сходить на кухню, сделать бутерброд, вернуться — а там всё ещё анимированная надпись Google.

— Да включись ты, кусок виртуального пластика! — шепчу я, чтобы не разбудить соседей.

Через 5 минут экран загорается. Ура! Логин, паттерн, рабочий стол. Всё, как в настоящем телефоне, только дико тормозит.

-6

Шаг 5. Запуск: фиаско, которое я заслужил

Жму Run. Студия собирает APK. Gradle, конечно, не молчит. Эмулятор виснет на секунду. И тут… О ЧУДО! На экране виртуального телефона появляется моё приложение! Белый экран, по середине чёрными буквами: «Hello World!».

Я вскакиваю. Сердце бьётся. В этот момент я чувствую себя богом. Я создал программу. Она работает! Ну, она хотя бы не вылетает. Кот одобрительно моргает.

Я вдохновлён. Сейчас я напишу Facebook 2.0. Добавлю вторую кнопку.

-7

Шаг 6. Финал: кнопка, которая сломала реальность

Решаю добавить ещё один TextView. Открываю activity_main.xml. Пихаю его под «Hello World». Всё красиво. Жму Run.

Эмулятор перезапускает приложение. И тут — БАЦ! Красный экран. Падает с ошибкой. Лог в консоли красный, как моя дипломная работа. Студия пишет что-то про ConstraintLayout и missing constraints. Я не понимаю ни слова. Начинаю гуглить. 14 вкладок открыто. Одна ссылка ведёт на Stack Overflow, где бородатые мужики спорят про «wrap_content» и «match_parent».

Через час я нахожу волшебную галочку — «Infer Constraints». Жму. Студия всё расставляет сама. Перезапускаю. Работает! На экране две надписи: «Hello World!» и «Кнопка». Кнопка — это даже не кнопка, а текст, который выглядит как кнопка. Но не нажимается.

Я понимаю, что для того, чтобы она нажималась, нужно писать код на Kotlin/Java. Начинаю читать про setOnClickListener. Закрываю Android Studio.

Иду пить пиво. Гугл победил. Кот мурлычет: «В следующий раз, хозяин, начни с Python».

Мораль: Первая программа на Android Studio — это не «Hello World». Это «Hello, бессонница, потраченный вечер и зарождающаяся лысина». Но когда твоё приложение с двумя текстовыми полями запускается без ошибок... это стоит того. Почти.