Skip to content

Getting Started ​

This walkthrough takes you from a fresh install to your first signed APK. At each step it notes what the app is actually doing under the hood, so the flow makes sense in terms of the code.

1. Install and launch ​

Install the WebToApp builder on a device running Android 7.0 (API 24) or newer.

Download the builder

Get the APK from GitHub Releases and install it like any other APK. The button auto-detects the newest version.

On launch, WebToAppApplication starts in builder mode (SHELL_RUNTIME_ONLY = false): it initializes the i18n strings, the Room database, and the dependency graph, then shows My Apps — the home screen that lists every app you create. See Main Screen.

2. Create an app definition ​

At the bottom of My Apps, tap Create. A panel expands with a 3-column grid of app types.

By default that grid is Web · Multi-Web · HTML · Offline Pack · Frontend · Gallery. PHP, WordPress, Node.js, Python, Go, and Media appear after you turn on Advanced features in About. That switch is off by default.

Tap Web for your first app. The Web editor opens.

3. Fill in the basics ​

Fill in the top Basic info card:

  • App name
  • Target URL — e.g. https://example.com
  • Icon — optional; a type-specific default is used otherwise

The rest of the editor is a long list of optional capability cards (fullscreen, splash, ad blocking, DNS, disguise, …). Ignore them for now — defaults are used. Each is covered under App Configuration.

Tap Save. Under the hood, the editor assembles a WebApp object (with appType = WEB and a webViewConfig) and writes it to the web_apps Room table. Your app now appears in the list.

4. Preview ​

On My Apps, tap your app's card. The list opens the matching activity directly:

  • IMAGE / VIDEO → the media player activity (only while Advanced features is on)
  • GALLERY → the gallery player activity
  • everything else (including WEB) → the WebView activity

There is no empty preview page on the back stack. One back returns to the list.

For a Web app, the WebView activity loads your URL with your configured settings — the same code the exported app will run. (Tap the card's ⋮ button instead to open the action menu.)

Preview ≠ export

Preview runs the host path (everything on the builder's classpath). Export runs the shell path, reading your config from an embedded JSON. A feature can work in preview yet vanish after export if a config field doesn't survive that trip. See Config Field Drift.

5. Build the APK ​

Tap ⋮ on your app's card, then Build APK. In the dialog you can:

  • pick the browser engine (System WebView or GeckoView),
  • optionally enable resource encryption, isolation, background run, and notifications,
  • force a full rebuild (otherwise an incremental mode is chosen automatically).

Tap build. The ApkBuilder takes the shell template APK, patches its package name / icon / permissions, embeds your WebApp config as app_config.json, and signs the result (V1/V2/V3). See Build APK.

6. Install it ​

Open ⋮ → File Manager from the top-right of My Apps. Your APK is there — install it or share it. When you launch it, that APK runs in shell mode (SHELL_RUNTIME_ONLY = true): ShellModeManager reads your embedded app_config.json and drives the runtime, fully independent of the builder.

Next steps ​

Build from source ​

Requirements: Android Studio Hedgehog or newer, JDK 17. The Gradle wrapper pins Gradle 9.4.1.

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

For release builds, configure signing through local.properties and app/build.gradle.kts.