Thibaut Lombard — July 2025
Method | Strengths (S) | Weaknesses (W) | Opportunities (O) | Threats (T) |
---|---|---|---|---|
Direct load via file:///android_asset/ |
Easy to implement No server needed Works on all Android versions localStorage supported IndexedDB partially supported Fully offline compatible WebGL support possible depending on WebView version |
Same Origin Policy restrictions (SOP) No network access CORS blocked for AJAX/fetch JS limited for local files IndexedDB unstable on some devices WebGPU not available |
Simple static apps Full offline mode localStorage usable WebGL sufficient for basic 3D rendering |
Compatibility issues for advanced WebGL Limitations on fetch/ajax Cannot run WebGPU without native HTTP serving |
NanoHTTPD (embedded local HTTP server) |
Real HTTP server (no SOP/CORS restrictions) Full JS/JSON/CSS support Dynamic reloading Compatible with all Android versions Fully functional localStorage & IndexedDB WebGL and WebGPU possible if WebView supports it |
Adds an extra dependency APK size slightly larger More complex setup Uses CPU/memory Server lifecycle management needed |
Fast dev without rebuilds Easy debugging Supports heavy interactive 3D content (WebGL/WebGPU) Dynamic loading of large resources |
Bugs related to server handling CPU/memory overhead Security management Possible WebGPU issues on outdated WebViews |
WebViewAssetLoader (API 28+) |
Built into Android Serves assets via simulated HTTP No SOP/CORS issues Full JS execution Stable localStorage and IndexedDB Lightweight Native stable WebGL support Partial WebGPU (recent WebView only) |
Requires Android 9+ (API 28) Not available on older Android Limited to resources inside APK WebGPU not guaranteed on older Chromium WebView Less flexible than a full server |
Modern and secure Ideal for recent apps Good support for modern Web APIs (WebGL) Simple and secure deployment |
WebGPU compatibility issues Limited to in-APK files Possible bugs with JSON files on old WebViews |
Load via external HTTP server |
Full loading, no SOP/CORS issues Very flexible Simplifies development Works remotely Full localStorage and IndexedDB support Best WebGL and WebGPU performance |
Requires internet connection Depends on network More complex server setup Data/security risks CORS configuration needed server-side |
Perfect for hybrid or heavy apps Advanced interactive content High-performance 3D rendering Easy hot updates |
Network outages stop the app Variable latency Potential privacy leaks if unsecured Server dependency |
Thibaut Lombard