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í.
K čemu projekt slouží
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ů.
Základní workflow
Podle README je běžný postup práce následující:
- vytvořit aplikaci z URL, složky projektu, médií nebo šablony runtime projektu
- nastavit WebView, toolbar, splash screen, oprávnění, moduly, podpis a chování runtime
- zkontrolovat náhled přímo v telefonu
- sestavit a podepsat APK v zařízení
- 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.
Architektura projektu
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.
APK builder
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í
Lokální runtimy
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.
WebView a rozšíření
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.
Bezpečnost a limity
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 = 28je technický kompromis kvůli lokálním runtimům, ne obecně ideální model pro běžnou distribuci přes obchod
Build ze zdrojů
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.
Licence
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í.