- Kotlin 98.6%
- Python 0.7%
- Shell 0.5%
A closed-mode server does not federate and has no public rooms, as on iOS. v26.10.0 adds Element's switch for it, SessionEnterpriseService.arePublicRoomsDisabledByHomeserver(), and our DefaultSessionEnterpriseService now returns the session's closed mode there instead of false. Creating a room or space then offers no "Public" (ConfigureRoomPresenter, which also creates spaces), and the Security & privacy screen of a room or space no "Anyone" (SecurityAndPrivacyState), except on a room that is already public, so its state stays visible. "Ask to join" (Labs, off by default) stays, as on iOS. Servers without closed mode, and servers whose mode is not known, keep Element's options. DefaultSessionEnterpriseServiceTest covers closed mode, encryption off without closed mode and an unknown mode; its module's tests now use the server encryption fakes. OPENMESSENGER.md describes the gate in the closed-mode row, now named "silent device confirmation and no public rooms", and lists the edits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| .github | ||
| .idea | ||
| .maestro | ||
| annotations | ||
| app | ||
| appconfig | ||
| appicon | ||
| appnav | ||
| codegen | ||
| docs | ||
| enterprise@5c06c0f1e4 | ||
| fastlane/metadata/android/en-US | ||
| features | ||
| gradle | ||
| libraries | ||
| openmessenger | ||
| plugins | ||
| screenshots | ||
| services | ||
| tests | ||
| tools | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| AUTHORS.md | ||
| build.gradle.kts | ||
| CHANGES.md | ||
| CLAUDE.md | ||
| CODEOWNERS | ||
| CONTRIBUTING.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| LICENSE-COMMERCIAL | ||
| NOTICE.md | ||
| OPENMESSENGER.md | ||
| README.md | ||
| SECURITY.md | ||
| settings.gradle.kts | ||
openMessenger for Android
openMessenger for Android is a Matrix messenger by UnityStack for Android 7.0 and later. It is a fork of Element X Android and uses the Matrix Rust SDK.
How this fork differs from Element X Android and how upstream releases are merged: OPENMESSENGER.md.
Status
Only debug builds of the fdroid flavour are made so far; nothing has been released yet. That flavour has no Google services; push notifications need a UnifiedPush distributor app on the device. Firebase push, release signing and store releases come later (see OPENMESSENGER.md).
Prerequisites
-
JDK 21. The build does not download one; Gradle runs on the JDK that
JAVA_HOMEpoints to. -
The Android SDK (the command-line tools are enough) with
platform-tools,platforms;android-37.0andbuild-tools;36.0.0. For the emulator, alsoemulatorand a system image, e.g.system-images;android-36;default;arm64-v8aon Apple silicon. SetANDROID_HOMEto the SDK, or writesdk.dir=<path to the SDK>intolocal.properties. -
A git clone: the build reads the git revision, so a source archive does not build. Do not initialise submodules:
enterpriseis Element's private repository. The Git LFS files (screenshots and test assets) are not needed to build the app:GIT_LFS_SKIP_SMUDGE=1 git clone https://git.unitystack.org/UnityStack/openmessenger-android.git
More on the development environment: docs/_developer_onboarding.md and CONTRIBUTING.md (from Element X Android).
Build
With an emulator running or a device connected:
export JAVA_HOME=<path to JDK 21>
./gradlew :app:installFdroidDebug
adb shell am start -n eu.openmessenger.android.debug/io.element.android.x.MainActivity
On Windows, use gradlew.bat. The app appears as "openMessenger dbg". Debug builds are signed with the debug key in app/signature/, so no secrets or signing setup are needed.
To build only the APK, for one ABI (arm64-v8a for the emulator on Apple silicon, x86_64 on Intel and AMD machines):
./gradlew :app:assembleFdroidDebug -Pandroid.injected.build.abi=arm64-v8a
The APK is then app/build/intermediates/apk/fdroid/debug/app-fdroid-arm64-v8a-debug.apk. Without -Pandroid.injected.build.abi, Gradle builds an APK for each of the four ABIs plus a universal one, in app/build/outputs/apk/fdroid/debug/. The first build downloads Gradle and all dependencies (about 4 GB in ~/.gradle) and takes about 20 minutes.
Build the fdroid flavour only: the gplay flavour, which ./gradlew assembleDebug also builds, contains Element's Firebase configuration (see OPENMESSENGER.md).
Security
See SECURITY.md.
Licence
AGPL-3.0-only, see LICENSE. openMessenger for Android is based on Element X Android, copyright Element Creations Ltd and New Vector Ltd. Details, including the copyright of UnityStack's modifications: NOTICE.md.