RadioCheck Android Setup¶
Prerequisites¶
- Android Studio Ladybug or newer (installs Android SDK 36)
- JDK 17+ (
brew install openjdk@17, thensource scripts/android-env.sh) - Android SDK 36 with build-tools 36.0.0
ANDROID_HOMEconfigured (or Android Studio default SDK path at~/Library/Android/sdk)
Quick env bootstrap¶
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¶
Debug builds can also be produced with:
Firebase / FCM¶
Use the Firebase plugin in Cursor (or Firebase CLI) after signing in with Google.
- Sign in: run the Firebase plugin login flow (or
npx -y firebase-tools@latest login). - Create or select project for RadioCheck (can be separate from Supabase; FCM only needs messaging).
- Register Android app with package
com.last1.radiocheck. - Add SHA fingerprints from
./scripts/print-android-sha.sh(debug now; add release/Play App Signing SHA before production). - Download config: replace
android/app/google-services.jsonwith the real file from Firebase. - Service account: Firebase Console → Project settings → Service accounts → Generate new private key.
- Supabase secrets:
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.
Deep links and App Links¶
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.jsonhttps://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¶
- Generate an upload keystore and configure Play App Signing.
- Replace the debug signing config in
android/app/build.gradlefor release builds. - Ship to the internal testing track first (see
docs/native-rollout-checklist.md). - 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-inedge function (background) - Need backup →
radiocheck://check-in?response=need_help - Going dark →
radiocheck://check-in?response=going_dark