77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
# Android Build
|
|
|
|
Build the APK with:
|
|
|
|
```sh
|
|
make apk
|
|
```
|
|
|
|
Build the release-signed APK with:
|
|
|
|
```sh
|
|
make apk-release
|
|
```
|
|
|
|
`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.
|
|
|
|
`make apk` remains a developer build path and may use Gio's default debug or
|
|
ephemeral signing behavior if no explicit signing key is provided.
|
|
`make apk-release` is the production-signing path and fails unless a dedicated
|
|
release keystore and password file are present.
|
|
|
|
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.
|
|
- `RELEASE_SIGNKEY` overrides the release keystore path used by `make apk-release`.
|
|
- `RELEASE_SIGNPASS_FILE` overrides the password file path used by `make apk-release`.
|
|
|
|
Default release-signing paths:
|
|
|
|
- `~/.config/keepassgo/android-release.keystore`
|
|
- `~/.config/keepassgo/android-release.pass`
|
|
|
|
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 release target wraps `make apk` and injects explicit signing credentials so
|
|
local release builds and CI use the same stable key.
|
|
|
|
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.
|