Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

RequirementValue
Minimum API level24
Compile SDK36
Android Gradle Plugin9.0.0 (Gradle wrapper 9.5.1)
Kotlin binding runtimenet.java.dev.jna:jna:5.18.1@aar (UniFFI runtime)
Coroutinesorg.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

RequirementValue
Deployment targetiOS 17 or higher
Swift toolingswift-tools-version: 5.10 (Swift 5 language mode)
Architecturesarm64 (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.aar and 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 (getSdkCompiledVersion across 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.