Аудит в подарокАудит сайта в подарокдо 31 декабряПодробнее
Тема
Приложения
Дата
Спрос на вопрос
289 показов в месяц

Разработка приложения под Android: сторы, устройства, релиз

Разработка приложений для Android: от 350 000 ₽ и 8-16 недель, аккаунт Google Play за 25 $, закрытое тестирование 12 на 12, парк устройств и RuStore.

Разработка приложений для Android стоит от 350 000 ₽ и занимает 8-16 недель до публикации. Аккаунт Google Play стоит 25 $ один раз, а не ежегодно, проверка обновлений обычно занимает 1-3 дня. Но у новых личных аккаунтов есть отдельное препятствие: перед первым публичным релизом Google требует закрытое тестирование - не меньше 12 тестировщиков в течение 12 дней подряд.

Дальше - почему Android дороже в разработке при той же цене, что и iOS, как китайские прошивки убивают push, и что делать с дистрибуцией в России, где Google Play уже давно не единственная точка.

Разработка приложений под Androidот 350 000 ₽сроки: 8-16 недель

Чем разработка приложений для Android тяжелее

Публиковаться в Google Play проще, чем в App Store. А вот довести приложение до состояния «работает у всех» - заметно сложнее.

Парк устройств. У iOS десяток актуальных моделей и две версии системы, покрывающие почти всю аудиторию. У Android в реальной статистике проекта живут телефоны от флагманов до устройств за восемь тысяч рублей, версии системы от Android 9 до последней, диагонали от 5 до 7 дюймов, вырезы и подэкранные камеры в произвольных местах. Одна и та же вёрстка на 360 логических точек ширины и на 480 выглядит по-разному, и проверять это надо руками.

Разный WebView. Для гибридного приложения это ключевой момент. Интерфейс рендерит системный Android System WebView, и его версия у пользователей разная: где-то он обновляется автоматом, где-то отстал на несколько лет, а на некоторых прошивках его умудряются отключить. Практическое следствие простое: современный CSS и свежие возможности JavaScript надо проверять на реальном старом устройстве, а не в браузере на своём ноутбуке. На прошлом мобильном проекте я держал парк подменных телефонов именно для этого, и примерно каждый третий визуальный баг приходил не из кода, а из старого WebView.

Китайские прошивки. MIUI у Xiaomi, EMUI у Huawei, ColorOS у Oppo и родственные им системы агрессивно экономят батарею. Они выгружают приложение из памяти, режут фоновые задачи и глушат уведомления, если приложение не добавлено в список «автозапуск» вручную в настройках телефона. Стандартными средствами Android это не лечится: приложение просто не получает управление. Единственный работающий подход - показать пользователю понятный экран с инструкцией по его конкретной прошивке, если push перестал приходить. Обещать заказчику стопроцентную доставку уведомлений на таких устройствах я не берусь и другим не советую.

Аккаунт, 25 $ и правило 12 на 12

Google Play Console оплачивается один раз. Дальше начинается разница между личным аккаунтом и аккаунтом организации.

Аккаунт организации требует подтверждения юрлица и номера D-U-N-S, зато не подпадает под требование закрытого тестирования. Личный аккаунт, зарегистрированный недавно, обязан провести закрытое тестирование: минимум 12 участников, которые непрерывно участвуют не меньше 12 дней, и только после этого открывается доступ к публичному релизу. Двенадцать человек надо найти заранее, собрать их почты, привязанные к Google, и убедиться, что они действительно установили сборку.

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

Target SDK: ежегодная обязательная работа

Каждое приложение объявляет target SDK - версию Android, под которую оно собрано. Google ежегодно поднимает минимально допустимое значение. Приложение, которое не обновило target SDK к назначенному сроку, сначала перестаёт показываться в поиске новым пользователям на свежих устройствах, а затем становится недоступным для установки вовсе.

Практически это означает: приложение нельзя выпустить и забыть. Раз в год нужен релиз с поднятым target SDK, и почти всегда вместе с ним приезжают новые требования системы. Именно так появились обязательный запрос разрешения на уведомления с Android 13, новые правила фоновой работы и ограничения на точные будильники. На гибридном проекте это тянет обновление Capacitor и всех плагинов, и раз в год стабильно находится плагин, который под новую версию не собирается.

Чеклист

Чек-лист по релизу в Google Play

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

20 проверок 8 критично 9 важно 3 можно потом

01 До старта

  • критично Выбран тип аккаунта: личный требует закрытого тестирования 12 на 12 чинить до запуска
  • критично Google Play Console оплачена, 25 $ разово чинить до запуска
  • критично Собран список из 12 тестировщиков с почтами Google чинить до запуска
  • критично Политика конфиденциальности опубликована по постоянному адресу чинить до запуска
  • критично Определён минимальный поддерживаемый Android и список тестовых устройств чинить до запуска

02 Требования Google Play

  • критично Target SDK не ниже актуального требования этого года чинить до запуска
  • критично Раздел Data safety заполнен и совпадает с реальным сбором данных чинить до запуска
  • критично Публикация в формате App Bundle, подпись ключом Google Play чинить до запуска
  • важно Каждое чувствительное разрешение обосновано в консоли в первый месяц
  • важно Фоновая геолокация: отдельная форма и видео сценария в первый месяц
  • важно Удаление аккаунта доступно из приложения и по веб-ссылке в первый месяц

03 Парк устройств и совместимость

  • важно Проверка на реальном телефоне со старым Android System WebView в первый месяц
  • важно Проверка на Xiaomi или Huawei: автозапуск, фоновые задачи, push в первый месяц
  • важно Экраны от 5 до 7 дюймов, вырезы, системные жесты навигации в первый месяц
  • важно Крупный системный шрифт и включённая экономия трафика в первый месяц
  • важно Поведение при потере сети и при переходе Wi-Fi в мобильный интернет в первый месяц

04 Дистрибуция помимо Google Play

  • важно RuStore: отдельный аккаунт, своя модерация, свои push-сервисы в первый месяц
  • можно потом Huawei AppGallery: замена сервисов Google на HMS для push и карт когда дойдут руки
  • можно потом Прямая раздача APK: обновления только вручную когда дойдут руки
  • можно потом Единая нумерация версий во всех каналах когда дойдут руки

Разрешения времени выполнения

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

Отдельно стоит фоновая геолокация. Она запрашивается вторым шагом, после обычной, и Google требует для неё отдельную форму с обоснованием и видео сценария использования. Если фоновый GPS не является ядром продукта, дешевле обойтись без него: это и модерация, и батарея, и жалобы пользователей.

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

App Bundle и ключ подписи

С 2021 года новые приложения публикуются в формате App Bundle, а не APK. Google сам собирает из него оптимизированные сборки под конкретное устройство: только нужные ресурсы, только нужная архитектура. Приложение весит меньше, устанавливается быстрее.

Побочный эффект - подпись. При публикации через App Bundle ключ подписи хранит Google, а у вас остаётся ключ загрузки. Терять его нельзя, но потеря восстанавливается через поддержку, в отличие от старой схемы, где утрата ключа означала невозможность обновлять приложение вообще. Ключ загрузки, как и все остальные секреты, должен лежать в зашифрованном виде в репозитории или в хранилище секретов, а не в личных сообщениях.

Дистрибуция помимо Google Play

В России Google Play работает с оговорками: платные приложения и подписки российским разработчикам недоступны, а часть пользователей не может обновляться. Поэтому Android-приложение почти всегда выкладывается в несколько мест.

RuStore де-факто обязателен. Отдельный аккаунт, отдельная модерация, свой SDK для push-уведомлений и платежей. Работы это добавляет немного, обычно несколько дней, но заложить их надо: сборка под RuStore отличается конфигурацией.

Huawei AppGallery имеет смысл, если заметная доля вашей аудитории на телефонах Huawei без сервисов Google. Там придётся заменять их на HMS: свой push, свои карты, своя авторизация. Это уже не пара дней, а полноценная параллельная ветка, и браться за неё стоит только по цифрам из аналитики.

Прямая раздача APK с сайта работает как запасной канал и как способ раздать сборку сотрудникам. Минусы честные: система показывает предупреждение об установке из неизвестного источника, пользователь проходит через настройки безопасности, а обновления надо ставить руками. Для массового продукта это не канал, для внутреннего инструмента компании - вполне рабочий вариант.

Нативные части и тестирование

Всё, чего не хватает веб-слою, дописывается плагином на Kotlin: работа с файловой системой и медиатекой, обработка системного share-intent, биометрия, специфичные интеграции. У меня таких плагинов больше восьми, и на Android самым муторным был обмен данными между приложением и системным шерингом: интент приходит в отдельный процесс, и передача данных требует аккуратной работы с межпроцессным взаимодействием.

Эмулятора для проверки мало. Он не воспроизводит старый WebView, не показывает поведение прошивки Xiaomi, не даёт настоящую слабую сеть и не имеет реального сканера отпечатка. Минимальный набор для приёмки - три-четыре физических телефона: один свежий флагман, один бюджетник с Android на пару версий старше, один Xiaomi или Huawei и, если аудитория этого требует, планшет.

За что отклоняют

Отказы в Google Play чаще приходят от автоматики и почти всегда касаются данных, а не функциональности.

  • Data safety не совпадает с поведением. Приложение отправляет идентификатор устройства в аналитику, а в декларации об этом ничего нет.
  • Разрешение без обоснования. В манифесте остались камера и микрофон от плагина, которым вы не пользуетесь.
  • Фоновая геолокация без формы. Самая частая причина долгой модерации.
  • Политика конфиденциальности недоступна. Ссылка ведёт на страницу за авторизацией или на домен, который отвечает не всегда.
  • Скриншоты и описание обещают больше, чем есть. Особенно если в описании есть слова про заработок или медицину.

Один код на Capacitor закрывает Android, iOS и веб одной разработкой, а различия платформ уходят в плагины и конфигурацию сборок. Что входит в работу и как считается бюджет под конкретный список экранов, описано на странице разработки Android-приложений.

Посчитаем вашу задачу

Расскажите, что нужно. Отвечу в течение рабочего дня: сроки, вилка бюджета и что можно не делать, чтобы сэкономить.

Обсудить задачу
Обсудить задачу

Перезвоню сам

Оставьте имя и номер. Позвоню в рабочее время, обычно в течение пары часов.