etesync / etebase-java

A Java/Android client library for Etebase
https://www.etebase.com
BSD 3-Clause "New" or "Revised" License
52 stars 5 forks source link

Introduce a Kotlin Multiplatform Mobile library #2

Open mainrs opened 2 years ago

mainrs commented 2 years ago

KMM is a way to write code that runs on Android, iOS, native and the JVM. Common code is written in Kotlin and platform-specific code can then be used to implement lowlevel details (in this case networking).

The current etebase-java java implementation only works on Android. Rewriting it could make it possible to run it on Android and the JVM. Taking it a step further one could also include iOS support.

I am not familar with how native DLL loading would work in this case. I took a glimse at the code in this repository but do not really understand how it works to be honest. Does the Rust code generate all the necessary classes on built (deterministically)?

tasn commented 2 years ago

The Rust code generates a binary and Java code that wraps around and loads this binary.

The reason why it's Android only at the moment is because I wasn't able to find a reliable way to distribute and load binaries on non-Android.