# Production Options This app is a field tool for FFB harvesters, not a public consumer app, so the distribution strategy should optimize for controlled rollout to a known user base rather than App Store/Play Store discoverability. ## Current blocker `android/app/build.gradle.kts` still points the `release` build type at the **debug** signing config: ```kotlin buildTypes { release { signingConfig = signingConfigs.getByName("debug") } } ``` A real release keystore (generated once, kept private, referenced via a `key.properties` file that is **not** committed to git) is required before any of the options below produce a distributable build. `flutter build apk` today produces a debug-signed APK that will install fine for testing but should not be handed out as "production." ## Option 1 — Direct APK distribution Sign a release build with a real keystore and share the APK directly (email, internal file share, Firebase App Distribution, or a private download link). - **Pros**: no store review, no delay, full control over rollout timing, works for a small/known group of harvesters. - **Cons**: users must enable "install unknown apps" for the source; you own update delivery (no auto-update) unless paired with a tool like Firebase App Distribution or an in-app update check; no Play Protect scanning reassurance for end users. - **Best fit**: pilot rollout, a handful of estates/harvesters, fast iteration during early field testing. ## Option 2 — Google Play (Internal or Closed Testing track) Upload a signed release build (AAB preferred) to Play Console under an Internal Testing or Closed Testing track, and invite harvesters by email or a shareable opt-in link. - **Pros**: auto-updates, no "unknown sources" friction, Play Protect scanning, easy to promote the same build to a wider track later without re-signing. - **Cons**: requires a Play Console account (~$25 one-time), a privacy policy URL, and a short review pass per release (usually fast for testing tracks, slower for public production). - **Best fit**: once the app is stable enough for ongoing use across many harvesters/estates and update convenience matters more than rollout speed. ## Recommendation Start with **Option 1** for the current field-testing phase (small, known audience, fast iteration), then move to **Option 2** once the app stabilizes and the user base grows enough that manual APK distribution becomes a bottleneck. ## Next steps 1. Generate a release keystore and store it outside the repo (e.g. a password manager or secure ops storage) — never commit it. 2. Add a `key.properties` file (gitignored) referencing the keystore, and wire `android/app/build.gradle.kts` to use it for the `release` build type instead of the debug config. 3. Build and smoke-test a signed release APK (`flutter build apk --release`) on a real device before distributing. 4. Decide on update delivery (manual re-share vs. Firebase App Distribution vs. Play Console track) based on how many harvesters are testing at that point.