# Android focus helper `focus.jar` is a committed resource containing only `F.class` converted to DEX. `stubs/` contains compile-only Android signatures; they never ship in the JAR. Android supplies the actual framework implementation at runtime. Rebuild with `mise run //extensions/os-notifier:build-focus-helper`. Requires JDK 21 and D8 on the build machine, not on the user's device. On Termux, the `d8` package supplies D8 and its JDK dependencies. Normal extension builds copy the committed JAR without invoking either compiler. Compilation uses Java 8 bytecode without debug metadata and D8 release mode with minimum API 26. Minimum API is a bytecode target, not a compatibility claim. The JAR contains no manifest and uses a fixed timestamp for reproducibility. Build scratch files live under OS temp and are removed afterward. ## Runtime contract `app_process / F` with `CLASSPATH` pointing to `focus.jar` queries only the caller's UID-visible processes. Exit `0` means the `com.termux` process is unfocused. Exit `3` means focused. Exit `2` means the Termux process was absent. Any other result, signal, or timeout means unknown; notifications must remain suppressed. The helper uses hidden Android framework APIs; incompatible runtimes must fail closed. Before first use, the extension removes the JAR's write bits because Git checkouts and package extraction may restore mode 0644, which Android rejects. The helper does not need root, extra Android permissions, a new APK, or a Java installation. Foreground/background focus was tested on Android 17 / API 37; other Android versions, screen lock, and multi-window remain unverified.