![]()
Some checks are pending
iOS UniFFI Build / build-ios (push) Waiting to run
Add church management API library with cross-platform support for iOS, Android, and WASM. Features include event management, bulletin handling, contact forms, and authentication. |
||
---|---|---|
.. | ||
uniffi/church_core | ||
README.md |
Church Core Android Bindings
This directory contains the generated Kotlin bindings for the church-core Rust crate.
Files:
uniffi/church_core/
- Generated Kotlin bindings
What's Missing:
- Native libraries (.so files) - You need to compile these with Android NDK
- JNI library structure - Will be created when you compile native libraries
To Complete Android Setup:
1. Install Android Development Tools:
# Install Android SDK/NDK (via Android Studio or command line tools)
# Set environment variables:
export ANDROID_SDK_ROOT=/path/to/android/sdk
export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/[version]
2. Install cargo-ndk:
cargo install cargo-ndk
3. Build native libraries:
# From church-core directory
cargo ndk --target arm64-v8a --platform 21 build --release --features uniffi
cargo ndk --target armeabi-v7a --platform 21 build --release --features uniffi
cargo ndk --target x86_64 --platform 21 build --release --features uniffi
cargo ndk --target x86 --platform 21 build --release --features uniffi
4. Create JNI structure:
mkdir -p jniLibs/{arm64-v8a,armeabi-v7a,x86_64,x86}
cp target/aarch64-linux-android/release/libchurch_core.so jniLibs/arm64-v8a/
cp target/armv7-linux-androideabi/release/libchurch_core.so jniLibs/armeabi-v7a/
cp target/x86_64-linux-android/release/libchurch_core.so jniLibs/x86_64/
cp target/i686-linux-android/release/libchurch_core.so jniLibs/x86/
Integration in Android Project:
1. Add JNA dependency to your build.gradle
:
implementation 'net.java.dev.jna:jna:5.13.0@aar'
2. Copy files to your Android project:
- Copy
uniffi/church_core/
tosrc/main/java/
- Copy
jniLibs/
tosrc/main/
3. Usage in Kotlin:
import uniffi.church_core.*
class ChurchRepository {
fun fetchEvents(): String {
return fetchEventsJson()
}
fun fetchSermons(): String {
return fetchSermonsJson()
}
fun fetchBulletins(): String {
return fetchBulletinsJson()
}
// All other functions from the UDL file are available
}
Functions Available:
All functions defined in src/church_core.udl
are available in Kotlin:
fetchEventsJson()
fetchSermonsJson()
fetchBulletinsJson()
fetchBibleVerseJson(query: String)
fetchRandomBibleVerseJson()
submitContactV2Json(...)
fetchCachedImageBase64(url: String)
getOptimalStreamingUrl(mediaId: String)
parseEventsFromJson(eventsJson: String)
parseSermonsFromJson(sermonsJson: String)
- And many more...
Architecture Notes:
- All business logic is in Rust (networking, parsing, validation, etc.)
- Kotlin only handles UI and calls Rust functions
- Same RTSDA architecture as iOS version
- JSON responses from Rust, parse to data classes in Kotlin