ActivityWatch / ActivityWatch/aw-android

Play Store rating collapse (4.2→3.1) is driven by the ChromeWatcher.kt:76 NPE — data

Abierto
#185 6 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Kotlin
Estrellas
265
Forks
57
Merge medio
2 d 21 h
PR fusionados (30 d)
19

Descripción

## The Play Store rating is collapsing, and the data points at one specific crash

We now auto-collect Android vitals + rating history in [ActivityWatch/stats](https://github.com/ActivityWatch/stats) (see ActivityWatch/stats#17). Pulling it together makes the picture clear.

### Rating is in free-fall (`data/android-ratings.csv`)

| Date | Store rating |
|---|---|
| 2019 | 5.00 |
| 2022–2024 | ~4.4–4.5 |
| Jan 2026 | 4.21 |
| **Jun 2026** | **3.15** |

A ~1-point drop in ~6 months.

### Crash rate spiked over the same window (`data/android-crash-rate.csv`)

User-perceived crash rate ~**8–9%** (over Google's ~8% bad-behavior threshold); raw crash rate ~15–27%/day. User-perceived **ANR is ~0%** — this is a *crash* problem, not ANR.

### One crash dominates (`vitals.py errors`)

| Reports | Exception | Location |
|--------:|-----------|----------|
| **791** | `NullPointerException` | `ChromeWatcher.onAccessibilityEvent` (**ChromeWatcher.kt:76**) |
| 26 | `NotImplementedError` | `ChromeWatcher.onInterrupt` |
| ~22 | `SIGABRT` | `libaw_server.so` (Rust OOM) |

The #1 cluster (791) dwarfs everything else combined. Stacktrace:

```
Exception java.lang.NullPointerException:
at net.activitywatch.android.watcher.ChromeWatcher.onAccessibilityEvent (ChromeWatcher.kt:76)
at android.accessibilityservice.AccessibilityService$2.onAccessibilityEvent (AccessibilityService.java:2744)
...
```

### Conclusion

The rating collapse tracks the crash spike, and the crash spike is essentially **one NPE at `ChromeWatcher.kt:76`**. So the highest-leverage lever for *both* crash rate and rating recovery is:

1. **Null-guard `ChromeWatcher.kt:76`** (`onAccessibilityEvent`).
2. **Cut a fresh release from `master`** (~124 commits ahead of the 2023 Play build; already carries merged ANR fixes).

That one fix + a release should take the crash rate from ~9% toward the Rust-OOM floor and start the rating recovering.

### Reproduce the data yourself
In `ActivityWatch/stats` (key already on your machine):
```
uv run vitals.py errors --limit 10 --stacktraces
uv run vitals.py summary
# rating history: data/android-ratings.csv
```

Related: #176 (crash/ANR tracking — this issue is the rating-impact analysis). cc @TimeToBuildBob

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.