Matrix client based on Element Android X in the tradition of the original SchildiChat for Android which was based on the now deprecated Element Android codebase.
Similarly to Element X, this SchildiChat Android rewrite should still be considered beta, as it lacks some functionality which one might expect from a fully-featured chat app, compared to the old SchildiChat implementation.
An overview over changes compared to Element X can be found here.
If you want to translate SchildiChat, visit our weblate.
Translations that concern upstream Element code are best contributed directly to Element, who currently manage translations on localazy.
In general, building works the same as for Element X or any common Android project. Just import into Android Studio and make sure you have all the required SDKs ready.
Currently, SchildiChat uses a forked matrix-rust-sdk and
wysiwyg
published on GitHub packages,
which unfortunately still does not provide unauthenticated access.
Accordingly, before building, create a GitHub token with the read:packages
permission, and configure it in your local.properties
:
gpr.user=...
gpr.token=...
Alternatively, you may export the GPR_USER
and GPR_TOKEN
environment variables before building.
If you do not have a GitHub account, you can also download the appropriate .aar
file from
the SDK's releases and put it into ./libraries/rustsdk/matrix-rust-sdk.aar
.
To develop changes in our matrix-rich-text-editor fork:
./update_version 1.2.3
where 1.2.3
is your chosen version number. By not re-using any existing version number you can make sure you're using your
local build if the build of SchildiChat succeeds.make android
in its directory. (Make sure you have JAVA_HOME
, ANDROID_NDK_HOME
and all the build dependencies setup)settings.gradle.kts
to insert mavenLocal()
into the dependencyResolutionManagement {}
block.
(Cherry-pick)wysiwyg
in gradle/libs.versions.toml
to match the one you published locally.Generally, contributions are welcome!
Note that in order to ease upstream merges, we want to leave the smallest footprint possible on Element's sources
when implementing original features or patching Element's behaviour.
In particular (may change a bit while the project is still in alpha):
chat.schildi.*
package names) if reasonable
schildi/lib
module if it doesn't depend on element modules (except maybe strings)schildi/components
module if it depend on some of Element's Design/UI components but nothing elsesc
build flavor
libraries/designsystem
: we define the flavor sc
and thus put drawables in the sc
instead of main
directory.
For new modules that do not feature a sc
flavor yet, copy over the required build.gradle.kts
content from a module that does.schildi/lib
sc
build flavor, if we do not need to touch multiple translations.if
-statement), don't indent the upstream code, but rather add comments like
// Wrong indention for merge-ability - start
and // Wrong indention for merge-ability - end