2.9 KiB
Android Build
Build the APK with:
make apk
Build the release-signed APK with:
make apk-release
make apk uses a supported local JDK when JAVA_HOME points to Java 21
or Java 25. If the host does not have one of those working JDKs, it falls back
to the repo-managed Docker image in packaging/docker/android-apk/, which
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_ROOTdefaults to/opt/android-sdk.ANDROID_NDK_ROOTdefaults to/opt/android-ndk.JAVA_HOMEdefaults to/usr/lib/jvm/java-25-openjdk. Local builds support Java 25 and CI builds support Java 21.APK_BUILD_IMAGEoverrides the Docker image name used bymake apk-container.APP_IDoverrides the Android application id.APP_VERSIONoverrides the version shown inside KeePassGO itself.APK_OUToverrides the output path.APK_VERSIONoverrides the packaged app version.ANDROID_MIN_SDKoverrides the minimum supported Android SDK.ANDROID_TARGET_SDKoverrides the target Android SDK.SIGNPASS_FILEprovides the signing password by file instead of a command-line argument.RELEASE_SIGNKEYoverrides the release keystore path used bymake apk-release.RELEASE_SIGNPASS_FILEoverrides the password file path used bymake 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-latestandroid-sdk-build-toolsandroid-platform-35android-sdk-platform-tools- a working Java 21 or Java 25 JDK install for
make apk-local, or Docker formake apk
The repo tracks gogio as a Go tool, and the local build runs through:
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 without echoing the release
password in build logs.
The Android build uses the branded icon asset at:
internal/assets/keepassgo-icon.png
Note:
- KeePassGO's documented Android build uses Java 25 locally, while CI uses Java 21.
- If neither supported host setup is available,
make apkfalls 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
KeepassGoAPI35emulator showed a black-screen regression withgioui.org v0.9.0while a stock Gio example and KeePassGO both rendered correctly withgioui.org v0.8.0on the same emulator and SDK/JDK pipeline. KeePassGO is pinned to the working Gio line until that regression is understood upstream.