who_need_help/android/README.md

2.2 KiB

Who Need Help for Android

This module is a native Android WebView shell for the Phoenix application. It keeps authentication cookies, LiveView WebSockets, MapLibre, chat, and foreground geolocation in the same trusted origin.

Verified build configuration

  • Android Gradle Plugin 9.3.0
  • Gradle 9.6.1
  • compileSdk / targetSdk 37
  • Build Tools 37.0.0
  • Java source and bytecode level 17
  • minSdk 24 (project baseline, not an Android SDK requirement)

The debug origin is not stored in the Dockerfile or Gradle project. Set WNH_DEBUG_BASE_URL in the repository's ignored .env file. The supplied local configuration uses loopback together with adb reverse; debug builds allow cleartext traffic, while the WebView still restricts in-app navigation to that one configured origin.

Release builds do not have a default server. Supply the real HTTPS deployment:

./gradlew :app:assembleRelease \
  -PWNH_BASE_URL=https://help.your-domain.example

The build rejects a missing, HTTP, credentialed, query-bearing, or fragment-bearing release URL.

Reproducible Docker build

From the repository root:

./scripts/android-build.sh
sha256sum android/dist/who-need-help-debug.apk

The Docker build runs JVM unit tests, Android lint, and assembleDebug before it exports the APK and lint report.

Emulator verification

The optional emulator target contains the API 37.0 Google APIs x86_64 system image. It requires KVM and host networking. Pass the same .env value as a build argument, then expose the Compose proxy to Android with adb reverse:

set -a
. ./.env
set +a
docker build \
  --build-arg "WNH_DEBUG_BASE_URL=$WNH_DEBUG_BASE_URL" \
  --target emulator \
  -t who-need-help-android:emulator \
  android
docker run --rm --name who-need-help-android-emulator \
  --device /dev/kvm \
  --network host \
  who-need-help-android:emulator
docker exec who-need-help-android-emulator adb reverse tcp:4010 tcp:4010
docker exec who-need-help-android-emulator adb install \
  /opt/who-need-help/who-need-help-debug.apk

The application ID org.whoneedhelp.mobile is provisional until the publishing identity and store listing are chosen. Changing it after publication creates a different Android application.