Skip to content

RadioCheck Android Setup

Prerequisites

  • Android Studio Ladybug or newer (installs Android SDK 36)
  • JDK 17+ (brew install openjdk@17, then source scripts/android-env.sh)
  • Android SDK 36 with build-tools 36.0.0
  • ANDROID_HOME configured (or Android Studio default SDK path at ~/Library/Android/sdk)

Quick env bootstrap

source scripts/android-env.sh
./scripts/print-android-sha.sh

Debug keystore fingerprints for com.last1.radiocheck (as of initial scaffold):

  • SHA-1: 5E:8F:16:06:2E:A3:CD:2C:4A:0D:54:78:76:BA:A6:F3:8C:AB:F6:25
  • SHA-256: FA:C6:17:45:DC:09:03:78:6F:B9:ED:E6:2A:96:2B:39:9F:73:48:F0:BB:6F:89:9B:83:32:66:75:91:03:3B:9C

Local development

npm install
npm start
npm run android

Debug builds can also be produced with:

npm run android:build

Firebase / FCM

Use the Firebase plugin in Cursor (or Firebase CLI) after signing in with Google.

  1. Sign in: run the Firebase plugin login flow (or npx -y firebase-tools@latest login).
  2. Create or select project for RadioCheck (can be separate from Supabase; FCM only needs messaging).
  3. Register Android app with package com.last1.radiocheck.
  4. Add SHA fingerprints from ./scripts/print-android-sha.sh (debug now; add release/Play App Signing SHA before production).
  5. Download config: replace android/app/google-services.json with the real file from Firebase.
  6. Service account: Firebase Console → Project settings → Service accounts → Generate new private key.
  7. Supabase secrets:
node scripts/setup-fcm-secrets.mjs /path/to/firebase-service-account.json

Sets FCM_PROJECT_ID, FCM_CLIENT_EMAIL, and FCM_PRIVATE_KEY on Supabase project tcthzakppndkykatoefx.

Active Firebase project: radiocheck-fcm-7949b (Android app com.last1.radiocheck, app id 1:963270785565:android:f355785d6d1286ca9ee4f4).

Android devices store push tokens as fcm:<token> in users.expo_push_token.

Custom scheme intents are registered for radiocheck:// in AndroidManifest.xml.

For verified HTTPS join links, host Digital Asset Links at:

  • https://radiocheck.app/.well-known/assetlinks.json
  • https://www.radiocheck.app/.well-known/assetlinks.json

Example payload (replace SHA-256 with your release + debug cert fingerprints):

[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.last1.radiocheck",
      "sha256_cert_fingerprints": ["AB:CD:..."]
    }
  }
]

Google OAuth

Register SHA-1 and SHA-256 fingerprints for debug and release keystores in:

  • Google Cloud Console OAuth client
  • Supabase Auth provider settings

Play Store release

  1. Generate an upload keystore and configure Play App Signing.
  2. Replace the debug signing config in android/app/build.gradle for release builds.
  3. Ship to the internal testing track first (see docs/native-rollout-checklist.md).
  4. Complete Play Data safety (contacts, photos, notifications).

Widget

Users pin the Radio Check home-screen widget from the launcher widget picker. The widget reads the same JSON snapshot written by HQ via updateWidgetData().

Notification actions

Incoming check-in pushes expose:

  • I'm good → quick-check-in edge function (background)
  • Need backup → radiocheck://check-in?response=need_help
  • Going dark → radiocheck://check-in?response=going_dark