Tracking issue for the Play Console data-collection capability that now lives in this repo (vitals.py, android_installs.py, collect-play.yml), what works, and open decisions. Related: #4, aw-android#176.
Service account
aw-play-reports@activitywatch-176907.iam.gserviceaccount.com — key at ~/.config/activitywatch/play-sa.json (local + Bob's machine); repo secrets PLAY_SA_JSON + PLAY_BUCKET set.
✅ Works — Play Developer Reporting API (vitals + errors)
vitals.py works end-to-end; collect-play.yml runs it daily:
crash-rate / anr-rate → data/android-crash-rate.csv, data/android-anr-rate.csv
errors [--stacktraces] → top crash/ANR clusters + stacktraces (errorIssues/errorReports)
Actionable for agents/devs: the current top crash is ChromeWatcher.onAccessibilityEvent NPE at ChromeWatcher.kt:76 (~791 reports).
✅ Works — GCS bulk reports (installs)
Update: the SA's bucket access finally propagated (well past Google's "up to 24h"), so android_installs.py can now list and read the pubsite_prod_rev_… reports. CI automation via the SA is viable (earlier this was blocked by 403 storage.objects.list; resolved).
installed.csv metric — the real remaining decision
Access is no longer the blocker; the metric is:
- Manual export used "Installed audience" (unique users) — not present in any bulk report (installs/acquisition/ratings/crashes/store_performance); Statistics-dashboard-only, no API. Cannot be automated.
- Bulk reports offer "Active Device Installs" (devices, ~10% higher) — automatable in CI now, matches the chart's "Installed Devices" label.
So: Installed audience = manual forever, or switch to Active Device Installs = full CI automation.
Open items
Tracking issue for the Play Console data-collection capability that now lives in this repo (
vitals.py,android_installs.py,collect-play.yml), what works, and open decisions. Related: #4, aw-android#176.Service account
aw-play-reports@activitywatch-176907.iam.gserviceaccount.com— key at~/.config/activitywatch/play-sa.json(local + Bob's machine); repo secretsPLAY_SA_JSON+PLAY_BUCKETset.✅ Works — Play Developer Reporting API (vitals + errors)
vitals.pyworks end-to-end;collect-play.ymlruns it daily:crash-rate/anr-rate→data/android-crash-rate.csv,data/android-anr-rate.csverrors [--stacktraces]→ top crash/ANR clusters + stacktraces (errorIssues/errorReports)Actionable for agents/devs: the current top crash is
ChromeWatcher.onAccessibilityEventNPE atChromeWatcher.kt:76(~791 reports).✅ Works — GCS bulk reports (installs)
Update: the SA's bucket access finally propagated (well past Google's "up to 24h"), so
android_installs.pycan now list and read thepubsite_prod_rev_…reports. CI automation via the SA is viable (earlier this was blocked by403 storage.objects.list; resolved).installed.csvmetric — the real remaining decisionAccess is no longer the blocker; the metric is:
So: Installed audience = manual forever, or switch to Active Device Installs = full CI automation.
Open items
installed.csvmetric (Installed audience manual vs Active Device Installs automated).0values from not-yet-finalized recent days (e.g. saw2026-07-06 = 0between ~6300 neighbors).ChromeWatcher.kt:76NPE (aw-android#176).