A Capacitor shell that packages the web/ PWA
as a native Android app (me.lleo.telefon). There is no app-specific Java
beyond the generated MainActivity; the whole UI is the web app rendered in
a WebView, so calls and crypto work exactly as in the browser build.
capacitor.config.json appId / appName / webDir
package.json @capacitor/{core,cli,android}
android/ the Capacitor Android platform project (Gradle)
The web assets are not committed here. npx cap sync copies web/ into
android/app/src/main/assets/public/ at build time (that path is
.gitignored). The webDir in capacitor.config.json points at the web
build you want to bundle.
- Node ≥ 22
- JDK 21
- Android SDK (command-line tools are enough; Android Studio optional)
cd android
npm install # installs Capacitor CLI + platform deps
# Make the web assets available to Capacitor (point webDir at ../web, or
# copy/symlink the built web/ into the location capacitor.config.json
# expects), then sync them into the Android project:
npx cap sync
cd android
./gradlew assembleDebug # -> app/build/outputs/apk/debug/app-debug.apkFor a release build use ./gradlew assembleRelease with your own signing
config (no keystore is committed).
local.properties,*.apk,build/,.gradle/, and the copiedassets/public/are all.gitignored— they are regenerated bycap sync/ Gradle.- The app needs camera + microphone permissions for calls; these are
declared in
android/app/src/main/AndroidManifest.xml.