# Android Build Build the APK with: ```sh make apk ``` `make apk` uses a local Java 25 install when `JAVA_HOME` points to one. If the host does not have a working Java 25 install, it falls back to the repo-managed Docker image in `packaging/docker/android-apk/`, which also builds with Java 25. Environment: - `ANDROID_SDK_ROOT` defaults to `/opt/android-sdk`. - `ANDROID_NDK_ROOT` defaults to `/opt/android-ndk`. - `JAVA_HOME` defaults to `/usr/lib/jvm/java-25-openjdk`. - `APK_BUILD_IMAGE` overrides the Docker image name used by `make apk-container`. - `APP_ID` overrides the Android application id. - `APP_VERSION` overrides the version shown inside KeePassGO itself. - `APK_OUT` overrides the output path. - `APK_VERSION` overrides the packaged app version. - `ANDROID_MIN_SDK` overrides the minimum supported Android SDK. - `ANDROID_TARGET_SDK` overrides the target Android SDK. Installed machine prerequisites expected by this repo: - `android-sdk-cmdline-tools-latest` - `android-sdk-build-tools` - `android-platform-35` - `android-sdk-platform-tools` - a working Java 25 JDK install for `make apk-local`, or Docker for `make apk` The repo tracks `gogio` as a Go tool, and the local build runs through: ```sh go tool gogio -target android ./cmd/keepassgo ... ``` The Android build uses the branded icon asset at: - `internal/assets/keepassgo-icon.png` Note: - KeePassGO's documented Android build uses Java 25 locally. - If that host setup is unavailable, `make apk` falls back to the Docker image so the build still runs under Java 25 instead of encoding a newer host JDK as a requirement. - Android runtime testing on the `KeepassGoAPI35` emulator showed a black-screen regression with `gioui.org v0.9.0` while a stock Gio example and KeePassGO both rendered correctly with `gioui.org v0.8.0` on the same emulator and SDK/JDK pipeline. KeePassGO is pinned to the working Gio line until that regression is understood upstream.