Requirements and distributions
The SDK ships as release archives you download and install into your project; it publishes through no package registry. This page lists what each platform needs to build against the SDK, what the artifacts weigh, and how versions are stamped. The Downloads page names the released files.
Android
| Requirement | Value |
|---|---|
| Minimum API level | 24 |
| Compile SDK | 36 |
| Android Gradle Plugin | 9.0.0 (Gradle wrapper 9.5.1) |
| Kotlin binding runtime | net.java.dev.jna:jna:5.18.1@aar (UniFFI runtime) |
| Coroutines | org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 |
The Android artifact is a release AAR (Maven coordinate
com.angoratek:rustic-maps-sdk) carrying the Kotlin bindings plus the
Rust dynamic library for three ABIs. Measured sizes (2026-10-29): the AAR
is 16 MiB; the stripped per-ABI .so libraries measure arm64-v8a
12 MiB, armeabi-v7a 8.7 MiB, and x86_64 13 MiB.
iOS
| Requirement | Value |
|---|---|
| Deployment target | iOS 17 or higher |
| Swift tooling | swift-tools-version: 5.10 (Swift 5 language mode) |
| Architectures | arm64 (device) and arm64 (simulator) |
The iOS artifact is an XCFramework containing the static library, its
headers and modulemaps, consumed by Swift Package Manager through the
release’s checksummed zip (the RusticMapsSDK product). Measured sizes
(2026-10-29): 217 MiB per slice, 207 MiB after strip -x. A static
archive carries every compiled object and the consumer’s final link
discards unused code, so these archive sizes are not the size your
application adds; the per-architecture measurement is a recorded open
decision on whether the iOS artifact later moves to a dynamic slice.
React Native
The React Native artifact is a source TurboModule package
(@angoratek/rustic-maps-sdk) generated from the frozen contract. It
carries the generated TypeScript surface, the JSI C++ glue, and the
podspec/CMake wiring your application compiles against its own React
Native version, so no binary slice inside the tarball constrains which
React Native version you run. The Android side of the current package
builds the Rust static archive for arm64-v8a.
WebAssembly
The wasm artifact (@angoratek/rustic-maps-sdk-web) is the
wasm-bindgen ES module emit. Measured size (2026-10-29): 3.6 MiB
downloaded, of which the wasm module is 3.4 MiB.
The browser surface renders through WebGPU. Chromium-based browsers have
supported it flag-free since 113 (2023); Safari ships it from version 26;
Firefox ships it since 141, with desktop first. WebGPU is a
secure-context API, so your page must be served over HTTPS or from
localhost, and navigator.gpu is the feature test to use — no
user-agent sniffing. MDN’s WebGPU page carries the live compatibility
table.
Versions policy
- Pin exact versions. Release archives are immutable and carry a
version in their file name (
rustic-maps-sdk-android-v0.4.0.aarand the like); keep the version you validated against, and upgrade deliberately. - One version line. The Cargo workspace version is the single source
of truth: the Android Maven publication, the npm packages, and the
Swift manifest are all stamped from it at release time. The compiled SDK
also answers the version probe (
getSdkCompiledVersionacross the FFI), so your diagnostics screen can verify the loaded library matches the artifacts you shipped. - The FFI contract changes addition-only. Existing members keep their signature and meaning, so a minor-version upgrade keeps your compiled bindings valid; packaging changes (an artifact set or renamed target) bump the minor version while the release is 0.x.
- Semantic versioning from 0.1.0. Versioned tags (
vX.Y.Z) are the release trigger; tags are never moved, and a broken release is superseded by a new tag. - Checksums and signatures. Every release carries a per-asset SHA-256 checksum, an aggregated checksum manifest, and Sigstore signature bundles; verifying them is part of the Downloads flow.
Where the numbers come from: the sizes and tool versions above are copied from the packaging design’s recorded measurements and the build scripts that produce the artifacts, and they travel with the release notes of each tag.