Current target: open testing first, using the existing Play developer account and existing Google Cloud account.
- Debug backend default:
https://beta-backend-staging-kvuem5t7mq-el.a.run.app - Release backend default:
https://beta-backend-staging-kvuem5t7mq-el.a.run.app - Optional backend overrides:
BETA_BACKEND_DEBUG_URLBETA_BACKEND_RELEASE_URL
- Backend request auth:
BETA_BACKEND_API_KEYBETA_FEEDBACK_API_KEYBETA_BACKEND_API_KEYshould match Secret ManagerBETA_BACKEND_API_KEY.BETA_FEEDBACK_API_KEYshould match Secret ManagerBETA_FEEDBACK_API_KEY.
- Version values:
BETA_VERSION_CODEBETA_VERSION_NAME
- Optional release signing Gradle properties:
BETA_RELEASE_STORE_FILEBETA_RELEASE_STORE_PASSWORDBETA_RELEASE_KEY_ALIASBETA_RELEASE_KEY_PASSWORD
Example release bundle:
$props = ConvertFrom-StringData (Get-Content -Raw -LiteralPath key.properties)
$env:BETA_BACKEND_RELEASE_URL = "https://beta-backend-staging-kvuem5t7mq-el.a.run.app"
$env:BETA_BACKEND_API_KEY = "<same value as Secret Manager BETA_BACKEND_API_KEY>"
$env:BETA_FEEDBACK_API_KEY = "<same value as Secret Manager BETA_FEEDBACK_API_KEY>"
$env:BETA_RELEASE_STORE_PASSWORD = $props.BETA_RELEASE_STORE_PASSWORD
$env:BETA_RELEASE_KEY_ALIAS = $props.BETA_RELEASE_KEY_ALIAS
$env:BETA_RELEASE_KEY_PASSWORD = $props.BETA_RELEASE_KEY_PASSWORD
$storePath = (Resolve-Path -LiteralPath $props.BETA_RELEASE_STORE_FILE).Path
.\gradlew.bat --no-daemon "-PBETA_RELEASE_STORE_FILE=$storePath" :app:bundleReleaseBETA_RELEASE_STORE_FILE must be absolute or relative to app/, because the
Android Gradle plugin resolves storeFile = file(...) from the app module.
Normal Gradle builds do not auto-start logcat capture. Set
BETA_AUTO_LOGCAT=true only when a build should start
scripts/start-logcat-capture.ps1.
- AccessibilityService disclosure appears before a Blinkit, Swiggy Instamart, or Zepto screen-automation flow starts.
- AccessibilityService description explains cart-building assistance, stop-before-payment behavior, backend processing, and visible grocery-screen data that may include name, precise delivery location, and address if shown.
- Swiggy onboarding clearly says it currently uses the screen-assisted path while the secure MCP connection is still being finalized.
- Play Store long description explicitly documents
AccessibilityServiceuse. - App does not request broad all-files storage access.
- Feedback logs are opt-in.
- Screenshot/log feedback attachments must remain opt-in.
- Release backend must be Cloud Run HTTPS, not emulator-local.
- Debug/emulator builds also default to Cloud Run HTTPS, not local Docker.
- Screenshot automation requires
x-beta-backend-key; release builds should setBETA_BACKEND_API_KEY. - Feedback endpoint requires
x-beta-feedback-key; release builds should setBETA_FEEDBACK_API_KEY.
- Create new app under the existing developer account.
- Upload testing AABs to open testing. In the Android Publisher API this track
is named
beta. - Add privacy policy URL.
- Complete Data Safety using actual data sent:
- feedback text
- optional diagnostics logs
- app/device version metadata
- screen/accessibility-derived data used for Blinkit, Swiggy Instamart, and Zepto automation
- precise location, name, and physical address if visible in Blinkit, Swiggy Instamart, or Zepto screens during the user-started flow
- Complete AccessibilityService declaration.
- Before the next Play release, replace the existing review video with one that shows the disclosure, consent, Accessibility grant, cart-only stop, and feedback for the shared screen-assisted flow.
- Install from open testing.
- Start Beta and accept disclosure.
- Enable Accessibility and screen capture for the shared Blinkit/Swiggy Instamart/Zepto path.
- Run one Swiggy Instamart cart-only order; confirm Beta adds only the requested item, verifies the cart, and stops before checkout/payment.
- Run one Blinkit cart-only order.
- Run one Zepto cart-only order.
- Submit "Worked" feedback.
- Submit "Report issue" feedback with logs enabled.
- Verify both feedback rows reach the backend.