Android
January 25

Приложение для Android с нуля до релиза за 3 недели

Все больше классных смартфонов на андроиде выпускают, все сильнее стирается граница между iOS/Android, в особенности из-за санкций и ограничений на важные и нужные для жизни сервисы, и я решил сделать андроид-версию своего счётчика дней в новогодние праздники (которые у меня объединились с отпуском).

Предыстория и о чем статья

Чуть больше двух лет назад я начинал изучать верстку с использованием Jetpack Compose, потому что это похожая штука на SwiftUI, и даже успел за пару месяцев сверстать большинство компонентов дизайн-системы для приложения с площадками для тренировок (вот iOS-версия), но потом все же забросил это дело, потому что:

  • хотелось развивать iOS-приложения, и я это успешно делал
  • не хотелось тратить время на изучение андроид-разработки с нуля, когда я уже умею делать приложения для iOS
  • в то время мне еще совсем не казалось, что есть смысл смотреть в сторону смены айфона на андроид (а теперь ситуация постепенно меняется)
  • не пользовался нейросетями для разработки

Насчёт счётчика дней - именно с идеи этого приложения я и начинал свою карьеру в iOS-разработке, при этом сам же пользуюсь этим приложением на айфоне, и поэтому решил именно с него начать обучение андроид-разработке в этот раз.

В этой статье расскажу самое интересное и главное на мой взгляд про андроид-разработку с нуля и до публикации в русторе. И пара слов будет про рустор.

Что нужно знать и уметь

Язык программирования

Как ни странно, не нужно знать язык программирования, чтобы сделать андроид-приложение. Т.е. ни Kotlin, ни Java мне не пригодились. Первый я могу очень поверхностно читать (он похож на Swift), а второй вообще не знаю и не хочу знать . В разработке мне это не понадобилось совсем.

Софты

Нужно уметь формулировать свои мысли в слова, чтобы писать запросы в нейросеть.

Нужно уметь излагать свои мысли простым и понятным языком, и в достаточной степени детализировать постановку задачи, чтобы получить результат как можно ближе к желаемому.

Планирование

Для разработки андроид-приложения мне пригодились навыки планирования и деления задач на подзадачи (декомпозиция).

Абсолютно все задачи для нейросети я провожу через планирование. Нельзя просто сказать "Хочу такое приложение, чтобы в нем можно было запоминать события и считать дни" - получится полная фигня, хотя что-то может быть даже будет работать

Нужно уметь составить план по разработке приложения для начала у себя в голове, а потом перенести его в текстовый формат для последующей обработки нейросетью.

Принципы разработки

В процессе разработки iOS-приложений я привык обращать внимание на разные моменты, а отдельно хочу выделить эти:

  1. Пользовательский опыт (UX) и интерфейс (UI): дизайн должен быть интуитивным, простым и удобным для использования одной рукой; важна консистентность элементов управления и предсказуемое поведение.
  2. Адаптивность: интерфейс обязан корректно отображаться на экранах разного размера и разрешения
  3. Следование гайдлайнам: использование принципов Material Design для Android и Human Interface Guidelines для iOS для обеспечения привычного пользователям опыта

Формулировки взял из интернета, надеюсь что звучат понятно.

Это все не означает, что я знаю наизусть гайдлайны Android/iOS, или что я всегда планирую разработку для смартфонов и планшетов сразу, но я осознанно стремлюсь делать приложение так, чтобы пользователю было удобно и привычно, и чтобы пользователю не пришлось сталкиваться с ошибками, которые портят впечатление от использования приложения.

Система контроля версий (Git)

Про гит я писал в отдельной статье (ссылка), и если вам эта статья пригодилась, то призываю поставить лайк в телеграм.

Гит позволяет вести разработку с высокой степенью уверенности в сохранении результатов работы. Поскольку нейросеть регулярно ломает код, то при помощи гита можно вернуться на предыдущий этап, когда все работало.

Инструменты

Я заранее определил идею для приложения, у меня был готовый дизайн в iOS-приложении, поэтому переходим к выбору инструментов.

Android Studio

Тут запускаю приложение на эмуляторе и нажимаю иногда кнопку для форматирования кода, фича кстати классная, вот демо:

Правык клик на папке с файлами -> Reformat Code
Ставлю три галки и жму "Run"

Cursor

Тут происходит основная разработка.

Часто после генерации кода в курсоре мне приходится вручную исправлять пропущенные импорты в Android Studio для каких-нибудь кнопок или отступов, но это не требует знания языка программирования:

Навожу курсор на слово выделенное красным, жду пока появится всплывающее окно со словами Unresolved reference, и жму на кнопку Import class ...

Qwen Code CLI

Крутой бесплатный (на данный момент) инструмент для разработки (и не только), всем рекомендую попробовать, вот ссылка на гитхаб.

Использовал для составления планов, исправления мелких ошибок, больших (но простых) рутинных задач типа перемещения файлов в проекте и т.д. - может работать часами и не упирается в лимит, в отличие от курсора. Ну и отвечает менее качественно, так что компромисс.

Perplexity

Бывает, что ни курсор, ни квен не дают нормальный ответ и предлагают плохие решения, которые очевидно не работают (судя по поведению приложения в эмуляторе), и я закидываю вопрос в перплексити, где внезапно получаю рабочее решение - просто пересылаю это решение в курсор/квен и говорю применить. Иногда помогает сразу, иногда нужно поискать обходные решения, но это тоже крутой инструмент.

Сроки

Начал разработку 29 декабря 2025 года, релиз в русторе опубликовал через 19 дней - 17 января 2026 года. Код приложения в гитхабе - там можно посмотреть историю коммитов (первый коммит и коммит с тегом 1.0).

19 дней я округлил до трех недель просто для красоты. Если считать прямо по 8 часов разработки, то выйдет около 12 дней. В отпуске я сделал 90% работы, а после отпуска за несколько вечеров все доделал и выпустил релиз.

Что мне понравилось

Работа с Android Studio

После Xcode это показалось просто прорывом во многих аспектах, кроме разве что тестов. Запускать тесты в студии очень неудобно, ну или я еще не научился делать это удобно: в Xcode есть одно меню для запуска нужных тестов, а в студии я такое не нашел 🫣

Больше всего понравилось:

  • форматирование кода, о котором раньше уже написал и показал скриншоты
  • превью Jetpack Compose (запускается быстро, никаких крашей в фоне, удобнее чем в Xcode)
  • наличие терминала и плагинов, например, для работы с Makefile

В терминале я и квен запускал, и команды из Makefile (пока не нашел плагин для работы с Makefile) - этого очень не хватает в Xcode:

Кнопки для терминала и плагина Makefile
Слева код, справа тесты в терминале, и все это в одном месте (Android Studio) - чудеса!
Плагин для Makefile в действии - все команды из Makefile можно запускать прямо по кнопке "play"

Вес приложения

Андроид приложение значительно легче iOS-версии. Опубликованное в русторе приложение весит всего 2.6 мб (AAB-файл), APK в гитхабе весит всего 3.85 мб, тогда как iOS-версия весит 5.9 мб, причем около 40% веса добавилось из-за перехода с Xcode 16.4 на Xcode 26

Минимальная версия Android

Приложение работает на версии Android 8 и выше, релиз этой версии андроид был в 2017 году. Вся верстка на Jetpack Compose, стабильная версия которого вышла в 2021 году!

iOS-приложение работает на версии iOS 17 и выше, релиз этой версии iOS был в 2023 году. Эту версию системы я выбрал, чтобы использовать упрощенный инструмент для хранения данных приложения (Swift Data). Вся верстка на SwiftUI, который появился в 2019 году и был настолько дырявым, что его мало кто использовал в первые 2 года после релиза.

В общем, андроид ушел в большой отрыв в плане удобства верстки.

Что мне не понравилось

Навигация в Jetpack Compose

В iOS есть стандартные (нативные) инструменты для создания навигации любой сложности, но главное - есть простой и понятный способ как сделать простую навигацию по приложению.

В андроиде с навигацией намного сложнее, как и со многими другими штуками - для навигации надо подключать специальную зависимость (ссылка на документацию), и с ней пришлось немало повозиться, чтобы настроить безопасную зону (фронтальная камера, нижняя панель навигации) и передачу данных между экранами.

Gradle

Если бы это было моей работой, я бы разобрался в этом.

Но поскольку это не работа (а хобби), то ну его нафиг, потому что выглядит это нифига не весело, и ни разу не очевидно 🤪

Нахожу решения проблем, включая обходные решения, и на этом заканчиваю разбор.

Обилие инструментов

После Xcode, в котором объективно почти ничего лишнего нет (как и некоторых нужных вещей), в студии просто дофига всего, что мне не нужно, и непонятно. И это уже после их редизайна, в котором неплохо так изменили UI и спрятали многие кнопки.

В том числе было непросто настроить линтер и форматирование кода - выбрал два инструмента (ktlint + detekt), которые конечно же конфликтуют в некоторых настройках

Выбирал не по своему опыту (т.к. у меня его нет), а по предложению гугла и нейросети, но без линтера и форматирования кода можно намесить знатную кашу, поэтому лучше уж с ними, особенно если код пишу не сам.

Эмуляторы

Они издают неприятные системные звуки при смене языка в настройках и вообще при запуске приложения (и еще в разных ситуациях). Похоже, пришло время погуглить как это отключить (если это вообще возможно)

Рустор

Специально пишу на русском языке название этого магазина приложений, потому что, блин, это специальный магазин приложений конкретно для РФ. Нафига его называть английскими буквами?)

Требования к приложению

5 звезд за требования к приложению перед релизом - минимум полей для настройки приложения перед отправкой на модерацию.

В AppStore просто миллион полей, еще и разбросаны по разным местам на сайте.

Проверка приложения

5 звезд за скорость проверки приложения на релизе - меньше часа с момента первой отправки приложения до одобрения и публикации.

В iOS у меня был рекорд по скорости публикации одного из релизов - меньше часа, но это был не первый релиз, а это важно. Первый релиз в iOS у меня был долгим для каждого из трех приложений: модератор задает одни и те же бесполезные вопросы про монетизацию, целевую аудиторию и т.д., хотя в приложении не подключена монетизация, есть описание приложения на русском и английском языках, и заполнены все миллион обязательных полей в кабинете разработчика.

UX в русторе

3 звезды - слишком часто выдает бессмысленные ошибки в стиле "что-то пошло не так" и просит заново авторизоваться. Пишу в поддержку - они просят скриншоты. Присылаю скриншоты - они пишут, что нужны другие скриншоты, и что я что-то делаю не так.

Аналитика по приложению

Вот и вся доступная аналитика

1 звезда - почти никакой аналитики нет, и это плохо. Даже в AppStore есть стандартная аналитика, включая падения приложения.

Поддержка рустора сказала, что можно установить их инструмент для сбора аналитики в качестве отдельной зависимости, но я решил, что пока рановато, и подключил Firebase для отслеживания падений приложения. К слову, пока падений нет, как и пользователей

Заключение

Вот такой врыв в андроид я совершил неожиданно для самого себя в конце 2025 года, и считаю это успешным результатом. Еще раз ссылка на код, и ссылка на приложение в русторе - буду признателен за отзывы и тестирование

Приложение делал, чтобы проверить, насколько это вообще реально без знания языка, ну и всей специфики андроида, и чтобы набить руку.

Сейчас в свободное время делаю приложение с площадками для тренировок (аналог iOS-версии), и там уже будет полный фарш с точки зрения логики и количества фичей, потому что в приложении больше 50 запросов к серверу и куча экранов, это будет интересно

Отдельно в платном канале напишу больше подробностей и практических примеров разработки в андроиде, включая планирование, тесты и правила/навыки ... для нейросети.

Спасибо за внимание!