Android native project (skeleton)
Generated by hand for task #65 (Phase 08). The committed structure is intentionally minimal — operators with Android Studio installed should run:
cd apps/mobile
rm -rf android
npx cap add android
npx cap sync android
…to overwrite this skeleton with the canonical Capacitor CLI output.
Application id, app name and webDir are sourced from
apps/mobile/capacitor.config.ts and stay stable across regenerations.
Layout
android/
├── build.gradle # Top-level build config (AGP 8.7.2)
├── settings.gradle # Module includes + plugin paths
├── capacitor.settings.gradle # Per-plugin Gradle modules
├── gradle.properties # JVM heap + AndroidX
├── gradle/wrapper/
│ └── gradle-wrapper.properties # Gradle 8.11.1
└── app/
├── build.gradle # applicationId, sdk, deps, FCM hook
├── capacitor.build.gradle # Plugin module includes
└── src/main/
├── AndroidManifest.xml # Permissions, intent-filters, FileProvider
├── java/de/toolctrl/app/MainActivity.java # BridgeActivity
└── res/
├── values/strings.xml
├── values/styles.xml
├── values/colors.xml
├── xml/file_paths.xml
└── xml/network_security_config.xml
Signing & store submission
Operator-owned. See docs/operations/capacitor.md for the full
Play-Console runbook (keystore generation, Gradle signing config,
service-account JSON, internal-track upload).
Push notifications
google-services.json must be dropped into android/app/ before any
release build. The plugin is wired conditionally in app/build.gradle
so debug builds without the file still compile.