A simple tool to convert any website into an Android APK without requiring Android Studio or Java programming knowledge. The app acts as a WebView wrapper around your chosen website.
- Simple command-line interface with colorful output
- Automatic Java 17 downloading option
- Automated Android SDK tools installation
- APK signing and building process
- Clone this repository:
git clone https://github.com/Jipok/website-to-apk
cd website-to-apk
- Create a configuration file
webapk.conf
:
id = myapp # Application ID (will be com.myapp.webtoapk)
name = My App Name # Display name of the app
mainURL = https://example.com # Target website URL
icon = example.png # Path to your app icon (PNG format)
allowSubdomains = true # Allow navigation between example.com and sub.example.com
requireDoubleBackToExit = true # Require double back press to exit app
enableExternalLinks = true # Allow/block external links
openExternalLinksInBrowser = true # If allowed: open external links in browser or WebView
confirmOpenInBrowser = true # Show confirmation before opening external browser
- Generate signing key (only needed once, keep the generated file safe):
./make.sh keygen
- Apply configuration and build:
./make.sh build
The final APK will be created in the current directory.
./make.sh build
- Apply configuration and build./make.sh keygen
- Generate signing key./make.sh test
- Install and test APK on connected device./make.sh clean
- Clean build files./make.sh apply_config
- Apply settings from configuration file./make.sh apk
- Build signed APK./make.sh get_tools
- Download Android command-line tools./make.sh get_java
- Download OpenJDK 17 locally
You can make your app handle links to the website by setting the deeplink
option in your configuration file. When set, clicking links to your website on the device will open them in your app instead of a browser.
For example, if your website is https://example.com
, set:
deeplink = example.com
The app supports userscripts (similar to Tampermonkey/Violentmonkey scripts) through the scripts
configuration option:
scripts = scripts/*.js # Load all .js files from scripts directory
# OR
scripts = site-*.js # Load all files matching pattern
# OR
scripts = script1*.js script20.js # Load specific script files
- Scripts can use Tampermonkey/Violentmonkey/etc
@match
and@run-at
directives, other ignored - If no
@match
is specified, the script will run on all pages - Only
GM_addStyle
supported from Greasemonkey API - There are
toast("short message")
function - Script console output (console.log/alert/warn) can be monitored using:
./make.sh test
Common use cases include:
- Adding dark mode to websites
- Customizing website appearance
- Adding new functionality
- Fixing mobile compatibility issues
Example of some useful scripts:
- dark-mode.js - Universal dark theme that respects system preferences
- instant.js - Speed up page loads by preloading pages when the user taps
The following advanced options can also be configured:
cookies = "key1=value1; key2=value2" # Cookies for mainURL
JSEnabled = true # Enable JavaScript execution
JSCanOpenWindowsAutomatically = true # Allow JS to open new windows/popups
DomStorageEnabled = true # Enable HTML5 DOM storage
DatabaseEnabled = true # Enable HTML5 Web SQL Database
SavePassword = true # Allow saving passwords in WebView
AllowFileAccess = true
AllowFileAccessFromFileURLs = true
MediaPlaybackRequiresUserGesture = false # Disable autoplay of media files
- Target Android API: 33 (Android 13)
- Minimum Android API: 24 (Android 7.0)
- Build tools version: 33.0.2
- Gradle version: 7.4
- Required Java version: 17
- All app data is stored in the app's private directory
- The keystore
app/my-release-key.jks
password is set to "123456" by default - Internet permission is required and automatically included
- If you need to support different Android versions, edit
app/build.gradle
accordingly - Based on the original work from: https://github.com/successtar/web-to-app