uniffi-packaging-versioning
Installation
SKILL.md
UniFFI Packaging and Versioning
Turn one UniFFI crate into Android and Apple artifacts. Keep the checked-in generated bindings and the compiled library at the same revision, so that a bindings/library mismatch never reaches a device.
Verify with these checks
| Claim | Check | Run it when | A pass does not prove |
|---|---|---|---|
| Checked-in bindings match the Rust source | Regeneration script in --check mode, in the Rust CI lane |
Every change to the FFI crate or to the uniffi version |
That a prebuilt artifact on a machine is current |
| The exported API is the same on every target | Generate from each shipping target library and diff against the checked-in files | Packaging, and after a cfg change in the FFI crate |
Run-time behavior |
| The packaged library loads and passes its checksums | Kotlin: uniffiEnsureInitialized(), then one generated-binding call; Swift: one generated-binding call. Run it from a consumer on each shipping Android ABI family and on an iOS simulator |
Before release, and after every uniffi bump |
Another ABI, OS version, or artifact |
| The release candidate works as shipped | Final-artifact proof and release closure in references/release-proof.md |
Once per release candidate | Anything about a rebuilt artifact |
A host cargo check or cargo test proves none of these claims.