Как собрать полноценное Android-приложение на смартфоне без Android Studio и серверов
Обычно превращение сайта в мобильное приложение выглядит так: вы открываете сервис-обертку, вставляете ссылку, ждете очереди на сборку в облаке и получаете сомнительный APK, который просто открывает WebView. Если же нужно что-то серьезнее — например, упаковать локальный проект на Node.js или Python — приходится расчехлять компьютер, настраивать окружение и тратить часы.
Проект WebToApp ломает эту схему. Это полноценная «мастерская» прямо в вашем телефоне, которая собирает, подписывает и упаковывает APK локально. Без облаков, без подписок и без необходимости отправлять свой код на чужие серверы.
Что это за инструмент
WebToApp — это нативный Android-клиент на Kotlin и Jetpack Compose. Его главная фишка в том, что он не просто делает WebView-заплатку. Внутри спрятан полноценный билдер, который умеет патчить бинарные ресурсы (AXML/ARSC), инжектить зависимости и подписывать пакеты сертификатами V1/V2/V3.
Инструмент пригодится, если вам нужно быстро набросать прототип, создать офлайн-справочник из набора HTML-файлов или запустить специфический серверный скрипт как отдельное приложение.
Четыре сценария, которые меня зацепили
Я привык, что мобильные билдеры крайне ограничены. Здесь же функциональность заходит на территорию серьезных инструментов разработки.
1. Серверные рантаймы в кармане
Это самая сильная сторона проекта. WebToApp позволяет упаковать в APK не только статику, но и полноценный бэкенд:
- Node.js: запускается в отдельном процессе через нативный лончер.
- PHP 8.4: работает через бинарники PMMP, поддерживает SQLite и даже WordPress.
- Python: можно упаковать небольшое приложение на Flask, Django или FastAPI.
- Go: поддерживается компиляция прямо на устройстве.
Автор пошел на хитрость — хост-приложение использует targetSdk = 28. Это осознанный выбор (как у Termux), который позволяет запускать нативные бинарники из внутреннего хранилища. При этом для итоговых приложений, которые вы захотите выложить в Google Play, билдер умеет переписывать манифест под актуальный targetSdk 35.
2. Глубокий контроль над WebView
Если вы делаете приложение из обычного сайта, WebToApp дает настроить все: от User-Agent и кастомных страниц ошибок до внедрения своих JS и CSS скриптов. Есть поддержка расширений Chrome (MV3) и скриптов в стиле Greasemonkey. Это превращает обычный сайт в кастомизированное приложение с блокировщиком рекламы, темной темой или дополнительными кнопками в интерфейсе.
3. Локальная сборка и подпись
Вы создаете хранилище ключей (Keystore) прямо в приложении. Весь процесс сборки происходит на лету через библиотеку apksig. Можно выбрать имя пакета, иконку, версию и даже вырезать ненужные разрешения из манифеста, чтобы приложение не просило лишнего. На выходе получается готовый к установке APK или AAB для стора.
4. Офлайн-скрапер сайтов
Внутри есть инструмент, который выкачивает указанный сайт целиком: HTML, стили, шрифты и картинки. Он переписывает пути так, чтобы всё работало без интернета. Идеально для создания документации к библиотекам или портфолио, которое всегда под рукой.
Техническая начинка
Архитектура состоит из двух модулей: app (сам билдер) и shell (пустая оболочка, которая становится основой для ваших приложений). Код написан на Kotlin, для инъекции зависимостей используется Koin, а для базы данных — Room.
Интересно, что проект не пытается запихнуть всё в один огромный APK. Рантаймы вроде Node.js или движок GeckoView подтягиваются только при необходимости. Это экономит место и позволяет обновлять компоненты независимо.
Зачем это разработчику
Конечно, большие коммерческие проекты так собирать никто не будет. Но есть ниши, где WebToApp незаменим:
- Внутренние инструменты: сделать из обычной админки удобное приложение для сотрудников за пять минут.
- Демонстрация: показать заказчику или коллегам работающий прототип сайта в виде установленного приложения.
- Личные нужды: превратить любимый узкоспециализированный сервис в удобную утилиту с кастомными скриптами.
- Эксперименты: проверить, как веб-проект ведет себя в нативной обертке с разными движками (System WebView vs GeckoView).
Стоит ли пробовать
Если вам нравится возиться с Android «под капотом» и вы цените инструменты, которые дают полный контроль над сборкой, WebToApp точно заслуживает места в папке с инструментами. Проект открытый (лицензия Unlicense), активно обновляется и имеет живое комьюнити.
Единственный нюанс — порог входа. Это не просто «нажми кнопку — получи результат». Чтобы выжать из него максимум, нужно понимать, как работают разрешения в Android и как настроить локальный прокси или DNS-over-HTTPS, если ваш проект того требует. Но в этом и весь интерес.
