Сайт или PWA в APK на телефоне: WebView, TWA и RuStore
WebToApp собирает и подписывает Android-приложение из ссылки на сайт прямо на телефоне. Разобрал лицензию, возраст, ключ подписи, мост JavaScript и то, что требуют RuStore и Google Play от приложений-обёрток. Отдельно про выбор между WebView, TWA и нативным кодом.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Упаковка сайта или PWA в Android-приложение и публикация в RuStoreКлиент просит «ещё и в магазин»
Сайт или PWA уже работает, а владелец говорит: хочу в RuStore, пусть будет значок. Иногда причина здравая: часть аудитории ищет приложения в каталоге. Иногда у конкурента просто есть значок. Упаковкой сайта в Android-приложение и публикацией я занимаюсь в рамках мобильной разработки.
В канале GitHub Community 19 сентября 2026 вышел пост про web-to-app, набор, который собирает APK целиком на телефоне. Я прочитал README, документацию и часть исходников.
WebView, TWA или нативное
Способов три. В WebView приложение показывает страницу внутри себя, поэтому есть заставка, свои кнопки и мост между JavaScript и Android. TWA устроен иначе: по документации Chrome страницу рисует сам браузер на весь экран, а связь приложения с сайтом проверяется через Digital Asset Links. Проект для TWA генерирует Bubblewrap, а PWABuilder я описывал в туториале по PWA. Нативное приложение пишется на Kotlin или кроссплатформенном фреймворке.
Мой ориентир: PWA с манифестом и HTTPS, которой нужен значок в магазине, ближе к TWA. Сайту с заставкой и выбором файлов нужен WebView. Сканер и фоновая работа требуют нативного кода. Нужен ли магазин вообще, я разбирал в статье про выбор между ботом, сайтом и приложением.
Что за проект
Репозиторий github.com/shiaho777/web-to-app, автор shiaho, язык Kotlin. Лицензия по файлу LICENSE: The Unlicense, код передан в общественное достояние, использовать можно и в коммерции. Лицензии скачиваемых рантаймов не разбирал.
На 22 октября 2026: около 6,9 тысячи звёзд, 1073 форка, около 1100 коммитов, последний коммит 21 октября, релиз 2.8.1 от того же дня, файл APK около 26 МБ, нужен Android 6.0 и новее. Не архивирован. Документация на английском и китайском, интерфейс конструктора по README есть и на русском.
Как он собирает APK
Это не Termux и не Gradle на телефоне. По README конструктор берёт готовый шаблонный APK, правит манифест и ресурсы на двоичном уровне, кладёт конфиг и ваши файлы, убирает лишние разрешения и подписывает через apksig. Gradle нужен только тем, кто собирает сам конструктор из исходников. Для сайта хватает имени, адреса, иконки и кнопки сборки. Типов приложений двенадцать.
Документация описывает иконку и имя пакета, заставку из картинки или видео, полноэкранный режим, офлайн-кэш в духе PWA, уведомления через Firebase Cloud Messaging с вашей конфигурацией, список разрешений с камерой, выбор файлов и мост страницы к Android. На живом телефоне не проверял. RuStore Push в README не упомянут.
Ключ подписи
С другим ключом Android не обновит установленную версию. Справка RuStore советует один сертификат на все версии, а при его замене через поддержку все версии уходят в архив, и их загружают заново. По коду JarSigner.kt конструктор сам создаёт ключ, хранит его в закрытой папке приложения, а пароль кладёт обычным файлом рядом. Импорт и экспорт ключа есть.
Мой порядок: ключ создаётся на компьютере владельца, хранится у него с копией, в конструктор попадает импортом. Подробнее о ключе и аккаунте в разборе публикации в RuStore.
Что требуют магазины
Правила модерации RuStore, пункт 8.2, запрещают публиковать мобильный сайт как приложение без дополнительной функциональности. Формулировка: «WebView-приложения допускаются только при наличии дополнительной функциональности». Среди примеров push, офлайн-режим и работа с устройством. Про честный офлайн я писал в статье про приложение без связи. Пункт 8.1 называет минимальную версию Android 8.0, а шаблон WebToApp держит minSdk 23, поднять его можно в настройках экспорта.
Политика Google Spam запрещает приложения, которые показывают сайт в WebView без разрешения владельца или гонят трафик на сайт. У клиента разрешение есть, но в блоге Android Developers за октябрь 2020 Google пишет про поток приложений, которые просто открывают существующие сайты, и советует снимать их с публикации. По странице помощи Google новые приложения и обновления должны целиться в API 36, срок 31 августа 2026, продление до 1 ноября. Экспорт AAB в WebToApp переписывает это значение в манифесте, но поведение под Android 16 проверяют на устройстве. Доступность аккаунта Google из России уточняйте.
Где это не сработает
Проект молодой, ему меньше года. Автор по сути один: 936 коммитов из примерно 1100, у остальных от одного до 21. Релизы выходят каждые три-четыре дня, а среди открытых задач есть «App now crashing on build» от 19 октября. В репозитории лежит AGENTS.md для ИИ-агентов, среди авторов коммитов значится claude (12 коммитов). В описании и README указан адрес токена pump.fun, комиссии которого идут на развитие. Я это не оцениваю, но модель поддержки проекта стоит знать до работы для клиента.
По безопасности: нативный мост по документации включён по умолчанию, возможности под переключателями. В одном файле NativeBridge.kt я насчитал 67 методов с @JavascriptInterface. Документация Android предупреждает, что у такого моста нет проверки источника кадра, и советует грузить в WebView только свои адреса, а чужие открывать в браузере. В настройках есть режим новых окон: то же окно, внешний браузер или блок. Белого списка доменов в прочитанной документации не нашёл. Выключайте лишнее и проверяйте внешние ссылки вручную. Функции маскировки и клонирования приложений для клиентских обёрток не нужны.
Сборка на телефоне годится для эксперимента. Для публикации под ключ нужны воспроизводимая сборка и ключ у владельца.
Что можно сделать уже сейчас
Решите, нужен ли магазин. Если приложение только открывает сайт, по пункту 8.2 RuStore его не пропустит, и хватит PWA.
Выпишите, что приложение даст сверх сайта: офлайн, уведомления, камеру, быстрый вход. Без этого списка на модерацию идти рано.
Соберите демо на запасном телефоне, чтобы показать клиенту, как это выглядит. Ключ тестовый, в магазин файл не загружайте.
Если «приложением» клиент называет интеграцию с учётной системой, возможно, нужно решение в каталоге, а не APK. Условия одного из каталогов я разбирал в статье про приложение в каталог МойСклад.
Частые вопросы
Примет ли RuStore APK из WebToApp?
Файл подписанный, а RuStore принимает подписанные APK и AAB. Пропустит ли модерация, зависит от содержания по пункту 8.2. Публикаций через этот инструмент я не делал.
Нужен ли компьютер?
По README нет, сборка и подпись идут на телефоне. Компьютер, Android Studio и JDK 17 нужны, если собирать сам конструктор из исходников.
А iPhone?
Проект собирает только Android. Для iPhone остаются PWA и мини-приложения в мессенджерах.
Коротко о главном
WebToApp показывает, как просто получить подписанный APK из сайта. Магазинам нужен смысл внутри, клиенту нужны ключ и обновления, и тут инструмент на одном авторе остаётся экспериментом.
Хотите узнать, пройдёт ли ваш сайт или PWA модерацию в RuStore и стоит ли вообще идти в магазин? Напишите мне в Telegram кодовое слово «АПК». Разберём, чем приложение будет отличаться от сайта, выберем WebView или TWA и подготовим публикацию с ключом у вас.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


