# KeepOrg for Android A KDBX synchronization adapter with no third-party dependencies: the server is reached with `java.net.HttpURLConnection`, JSON is parsed with the platform's `org.json`, and the two screens are built in code. ## How a KeePass application sees it `KeepOrgProvider` is a `DocumentsProvider`, so the mirrored databases appear in every file picker under "KeepOrg". KeePassDX and Keepass2Android open them like any other document. When the application closes a file it had opened for writing, the provider triggers a synchronization pass, which is how a save reaches the server. `SyncService` is a foreground service that holds the server's event stream open, so a change pushed by a colleague arrives without opening the app. The user turns it on from the main screen; it is not started at boot. The merge policy in `Mirror.decide` is the same table as the desktop client's `internal/client/decide.go`. Keep the two in step. ## Building The Gradle wrapper is not committed. Generate it once with a local Gradle 8.9 or newer, or let the Makefile call Gradle directly: ``` gradle wrapper --gradle-version 8.9 # once, optional make android # unsigned release APK make android-publish # upload to the private F-Droid repo ``` The release build is deliberately unsigned: the private F-Droid repository signs what it publishes.