ActivityWatch / ActivityWatch/aw-android

v0.14.0 remaining: Play Store unblock + ChromeWatcher crash fix

未关闭
#189 32 条评论 0 个 reaction 已指派 1 人 已被 @TimeToBuildBob 认领 在 GitHub 查看
主要语言
Kotlin
星标
265
派生
57
平均合并
2 天 21 小时
30 天内合并 PR
19

描述

Follow-up to #176. Context rebuilt from full thread read.

## Current state (as of 2026-07-12)

- **v0.14.0dev20260712**: GitHub release published ✅, Play Store upload **blocked** (see item 1 below)
- **Top crash driver**: ChromeWatcher NPE (item 2) — dominant crash cluster, ~791 reports
- All SDK/build/fastlane blockers from #176 are resolved

## Open items

### 1. Remove `FOREGROUND_SERVICE_DATA_SYNC` permission (Play Store release blocker)

The v0.14.0 fastlane upload fails with:
```
Google Api Error: Invalid request - You must let us know whether your app uses any Foreground Service permissions.
```

Google Play Console requires a declaration form + demo video for `FOREGROUND_SERVICE_DATA_SYNC`. Since sync is disabled by default (#184) and not demo-able, we should remove it for now.

**Fix**: Two-line removal from `AndroidManifest.xml`:
- ``
- `android:foregroundServiceType="dataSync"` from the `SyncAlarmReceiver` service entry (or just drop the `uses-permission` and leave the type — the type without the permission is inert)

Re-add when sync is actually shippable and a demo video can be recorded.

### 2. ChromeWatcher NPE (top crash cluster — ~791 reports)

From `vitals.py errors`:
- **#1**: 791 reports — `NullPointerException` in `ChromeWatcher.onAccessibilityEvent` at **ChromeWatcher.kt:76**
- **#2**: 26 reports — `NotImplementedError` in `ChromeWatcher.onInterrupt` (not implemented)

This is the dominant driver of the ~8% user-perceived crash rate. Needs a null-check guard at ChromeWatcher.kt:76 and a stub `onInterrupt` implementation.

### 3. Hostname validation in aw-server-rust (enhancement, not blocker)

Erik requested a server-side guard to reject bucket creation with space-containing hostnames (so a misconfigured Android client can't create a broken bucket). Fix location: aw-server-rust bucket creation path.

### 4. Native OOM in sync (tracked upstream)

The `Scudo ERROR: Out of memory` crash during `syncBoth` is tracked in ActivityWatch/aw-server-rust#630 (unbounded event fetch). Short-term mitigation already merged (#184 — disabled auto-sync by default). Long-term fix is batch/stream processing in aw-server-rust.

## Done in #176

- targetSdkVersion 34→35 (#179 ✅)
- Build.DEVICE hostname fallback in both RustInterface.kt and SyncInterface.kt (#183 ✅)
- Auto-sync disabled by default (#184 ✅)
- Pre-release version workflow (#178 ✅)
- SUPPLY_TRACK routing fix for Play Store (#182 ✅)
- aw-webui Android device detection runtime fix (aw-webui#903 ✅)
- RubyGems/fastlane fix (#180 ✅)
- Hallucinated 'Related issues' section removed from #176 body

## Priority order

1. **#1 (FOREGROUND_SERVICE_DATA_SYNC removal)** — unblocks the v0.14.0 production Play Store upload; 2-line change
2. **#2 (ChromeWatcher NPE)** — dominant crash cluster, directly driving the rating decline
3. **#4 (upstream OOM)** — mitigated already, long-term fix in aw-server-rust#630
4. **#3 (hostname validation)** — enhancement, doesn't block release

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。