You can build an HTML app yourself in Android Studio with a WebView, a WebViewAssetLoader to serve your files over https, and Kotlin code for back navigation, file uploads, permissions, splash and offline handling — typically a few hundred lines plus yearly SDK upgrades. HTML to App generates the same kind of app without code. Build it yourself when you want full control or plan to add native features; use a builder when the HTML is the product.
What the DIY version involves
- Install Android Studio (several GB) and the SDK.
- Create a project, add a full-screen WebView, enable JavaScript and DOM storage.
- Add
WebViewAssetLoadersoassets/are served fromhttps://appassets.androidplatform.net— without it you are onfile://and ES modules break. - Handle the back button, external links,
target="_blank", file chooser, camera/mic/location permission callbacks, and errors. - Add a splash screen (SplashScreen API), edge-to-edge insets and a status-bar colour.
- Create a keystore, configure release signing, build the AAB.
- Repeat the target-API upgrade every year.
val loader = WebViewAssetLoader.Builder()
.addPathHandler("/web/", WebViewAssetLoader.AssetsPathHandler(this))
.build()
webView.webViewClient = object : WebViewClientCompat() {
override fun shouldInterceptRequest(v: WebView, r: WebResourceRequest) =
loader.shouldInterceptRequest(r.url)
}
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
webView.loadUrl("https://appassets.androidplatform.net/web/index.html")That is the core — and the easy part. The edge cases (permissions, uploads, links, insets, offline) are where the hours go.
Effort compared
| Android Studio | HTML to App | |
|---|---|---|
| Code to write | Hundreds of lines of Kotlin | None |
| Machine | Capable computer | Any Android phone |
| Custom native features | Anything | Built-in set |
| Upkeep | Yearly SDK and dependency upgrades | Rebuild |
| Cost | Free + time | Free APK · $5/mo Pro |
Questions people ask
Is it hard to make a WebView app in Android Studio?
The basic WebView is easy; a polished one is not. Permissions, file uploads, link handling, offline states, splash and signing take most of the effort.
Why use WebViewAssetLoader instead of file:// URLs?
file:// pages have no origin, so Chromium blocks ES modules, local fetch() and other features. WebViewAssetLoader serves assets from an https origin where they all work.
Can I export the Android project from HTML to App?
No. HTML to App delivers built, signed APKs and AABs, not source projects.