software:nastroje:web-to-app

WebToApp

Vytvořeno: 15.6.2026 | Aktualizováno: 15.06.2026 17:34

WebToApp je open-source Android aplikace pro vytváření instalovatelných APK z webů, statických webových projektů, médií a lokálních serverových runtimů přímo v telefonu. Oproti běžným „website to app“ wrapperům kombinuje konfigurovatelný WebView, lokální runtime prostředí, úpravy APK šablony a podepisování výsledného balíčku.

Poznámka: Článek je technická poznámka k projektu podle README a struktury repozitáře. Nejde o praktický test na reálném zařízení.

WebToApp je určený pro situace, kdy je potřeba z webového obsahu rychle připravit samostatnou Android aplikaci bez vzdálené build služby. Projekt podporuje několik typů vstupů:

  • webová URL jako WebView aplikace
  • statické HTML nebo frontend build
  • Node.js, PHP, Python a Go aplikace běžící přes lokální server v zařízení
  • WordPress přes lokální PHP a SQLite integraci
  • obrázky, video a galerie
  • multi-web aplikace s více weby v jedné aplikaci
  • experimentální úpravy existujících APK přes App Modifier

Typické použití dává smysl u interních dashboardů, offline dokumentace, prototypů, lokálních nástrojů, demo aplikací nebo přenosných webových projektů.

Podle README je běžný postup práce následující:

  1. vytvořit aplikaci z URL, složky projektu, médií nebo šablony runtime projektu
  2. nastavit WebView, toolbar, splash screen, oprávnění, moduly, podpis a chování runtime
  3. zkontrolovat náhled přímo v telefonu
  4. sestavit a podepsat APK v zařízení
  5. výsledný balíček nainstalovat, sdílet, exportovat nebo zálohovat

Důležitý rozdíl proti jednoduchým wrapperům je v tom, že WebToApp neřeší jen zobrazení vzdáleného webu. U některých typů aplikací balí projektové soubory a spouští lokální server, který se pak otevře ve WebView přes localhost.

Repozitář je Android projekt postavený nad Kotlinem, Jetpack Compose a Gradle Kotlin DSL. Má dva hlavní Gradle moduly:

app    - hlavní builder a hostitelská Android aplikace
shell  - runtime šablona používaná pro generované aplikace

Modul app obsahuje uživatelské rozhraní, správu projektů, build logiku, runtime managery a konfiguraci exportu. Modul shell je šablona výsledné aplikace. Při buildu se do ní vkládá konfigurace, assety a případně projektové soubory.

README uvádí, že hostitelská aplikace záměrně používá targetSdk = 28. Důvodem má být schopnost spouštět lokální nativní runtime prostředí podobně jako Termux. U Web/HTML/frontend/media aplikací projekt popisuje i export AAB s přepsáním targetSdk pro distribuci přes Google Play; runtime aplikace s Node.js, PHP, Pythonem, Go nebo WordPressem zůstávají podle README APK-only.

Vlastní builder pracuje se šablonou APK a upravuje ji podle konfigurace projektu. Z kódu a dokumentace vyplývají tyto části:

  • úprava binary AXML manifestu
  • úprava ARSC resources
  • injekce konfigurace, assetů, HTML, médií a runtime souborů
  • nastavení názvu aplikace, ikony, package name, verze a oprávnění
  • volitelné šifrování zdrojů
  • podepisování APK pomocí com.android.tools.build:apksig
  • podpora V1/V2/V3 podpisů
  • export AAB pro podporované typy aplikací

WebToApp se snaží balit i projekty, které potřebují lokální server. Shell aplikace při spuštění rozbalí projekt do interního úložiště, spustí odpovídající runtime a WebView nasměruje na lokální HTTP server.

Podporované runtime typy podle README:

  • Node.js – přes nativní launcher a libnode.so
  • PHP – PHP 8.4, včetně Composer podpory
  • Python – Flask, Django, FastAPI přes uvicorn, Tornado nebo jednoduchý HTTP server
  • Go – on-device build, vendor/offline build a spouštění binárky přes nativní loader
  • WordPress – lokální PHP + SQLite integrace

Runtime komponenty se podle dokumentace stahují při použití, nejsou všechny pevně součástí základního APK.

WebToApp obsahuje rozsáhlé nastavení WebView:

  • vlastní User-Agent a desktop režim
  • JS/CSS injekce
  • popup handling
  • PWA/offline cache strategie
  • vlastní error stránky
  • proxy, PAC proxy a DNS-over-HTTPS
  • dark mode, toolbar, fullscreen, long-press menu a další prvky chování aplikace

Projekt má také Module Market, který je postavený přímo nad adresářem modules/ v GitHub repozitáři. Moduly jsou jednoduché JS/CSS balíčky s manifestem module.json. Katalog se načítá z registry.json a submissions.json, takže přidání modulu probíhá přes běžný pull request.

Kromě jednoduchých modulů projekt zmiňuje i userscripty ve stylu Greasemonkey/Tampermonkey a částečnou podporu MV3 Chrome extension content scripts.

Projekt má několik bezpečnostních funkcí, ale zároveň i několik oblastí, které je potřeba brát opatrně.

Pozitivní bezpečnostní prvky:

  • šifrování zabalených zdrojů přes PBKDF2 a AES-256-GCM
  • volitelná runtime kontrola anti-debug, anti-Frida a DEX tamper
  • adblock a filtrování zdrojů
  • izolace některých WebView povrchů
  • aktivační kódy a remote activation přes vlastní HTTPS endpoint s ECDSA podpisem odpovědi

Limity a rizika:

  • aktivace běží na klientovi, takže u open-source aplikace nejde o plnohodnotnou anti-crack ochranu
  • shell šablona obsahuje široké množiny oprávnění; výsledný manifest závisí na konfiguraci a úpravách builderu
  • funkce jako App Modifier, disguise, forced-run nebo fingerprint disguise jsou dual-use a mají smysl jen s informovaným souhlasem uživatele
  • hostitelská aplikace s targetSdk = 28 je technický kompromis kvůli lokálním runtimům, ne obecně ideální model pro běžnou distribuci přes obchod

Repozitář je podle README sestavitelný přes Gradle wrapper. Vyžaduje Android Studio Hedgehog nebo novější a JDK 17.

git clone https://github.com/shiaho777/web-to-app.git
cd web-to-app
./gradlew assembleDebug

Release build vyžaduje nastavení podpisu v local.properties. V build skriptu je kontrola, která odmítá tichý release build podepsaný debug klíčem, pokud není explicitně povolený throwaway debug-signed release.

Projekt je publikovaný pod The Unlicense, tedy jako public-domain styl licence bez omezení pro kopírování, úpravy, publikování a komerční i nekomerční použití.

  • software/nastroje/web-to-app.txt
  • Poslední úprava: 15.06.2026 17:34
  • autor: Petr Nosek