Capacitor wrapper that loads the Next.js build into an Android WebView. Java/Kotlin shell; the actual app
is the web build, synced in via npx cap sync android.
See README.md for the full build, signing, Firebase and Play Store flow. Cross-package context is in the root CLAUDE.md.
- Native scaffolding (
app/,gradle/,build.gradle,AndroidManifest.xml, signing keystore). - The web bundle lives in
/web— to refresh it in the APK, build the web view and sync:yarn build-web-view # builds web for Android npx cap sync android # copies into android/app/src/main/assets
- Local-asset mode (default): app ships with the synced web build and loads it from
assets/. Fast, offline, App-Store-compliant. Use for releases. - Remote / dev mode: app loads from
http://10.0.2.2:3000(emulator) or your LAN IP (physical device) so changes to/webshow up instantly. Enable with:export NEXT_PUBLIC_LOCAL_ANDROID=1 export NEXT_PUBLIC_WEBVIEW_DEV_PHONE=1 # only when targeting a physical device yarn dev # or `yarn prod`
./gradlew clean
./gradlew assembleDebug # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk
./gradlew assembleRelease # signed release (needs keystore set up)
npx cap open android # open in Android StudioLogs:
adb logcat | grep -E 'CompassApp|com.compassconnections.app|Capacitor'
# WebView console → chrome://inspect/#devicesPush to main with a bumped versionCode in app/build.gradle triggers
.github/workflows/cd-android.yml, which builds the signed AAB and
uploads to Play Console. Manual release: build a signed AAB in Android Studio and upload yourself. See
README.md for keystore + Play API setup.
Capawesome live updates were disabled in early 2026 (free plan capped at 100 MAU) and removed entirely in
August 2026 — the plugin, capawesome.json, scripts/android_live_update.sh and the GitHub Action are
all gone. Web changes ship via the normal Play Store / App Store release.
Removed rather than left dormant because the dependency was still being synced into both native shells,
including the new iOS one, where a remote-bundle mechanism is an extra thing to justify under App Review.
Re-enabling means re-adding @capawesome/capacitor-live-update to web/package.json, the LiveUpdate
block and includePlugins entry in capacitor.config.ts, and restoring the deleted files from git
history.
- App package name is
com.compassconnections.app— must match Firebase Android-app config and signing cert's SHA-1/SHA-256. - After installing a new signing key you'll see
INSTALL_FAILED_UPDATE_INCOMPATIBLEuntil the previous APK is uninstalled. - Don't commit
local.properties, the keystore, orgoogle-services.jsonchanges unintentionally.