====== WebToApp ======
//Vytvořeno: **15.6.2026** | Aktualizováno: **~~LASTMOD~~**//
[[https://github.com/shiaho777/web-to-app|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é [[https://github.com/shiaho777/web-to-app/tree/main/modules|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 [[https://github.com/shiaho777/web-to-app/blob/main/.github/docs/remote-activation.md|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
===== 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 [[https://github.com/shiaho777/web-to-app/blob/main/LICENSE|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í.
===== Zdroje =====
* [[https://github.com/shiaho777/web-to-app|WebToApp – GitHub repozitář]]
* [[https://github.com/shiaho777/web-to-app/releases|WebToApp – GitHub Releases]]
* [[https://github.com/shiaho777/web-to-app/tree/main/modules|WebToApp Module Market]]
* [[https://github.com/shiaho777/web-to-app/blob/main/.github/docs/remote-activation.md|WebToApp – Remote Activation dokumentace]]
* [[https://github.com/shiaho777/web-to-app/blob/main/LICENSE|WebToApp – licence]]