Schnellstart: UESPA mit Android (Kotlin)
Wrapper: uespa-ffi + UniFFI · Ziele: arm64-v8a, armeabi-v7a, x86_64
1. Konto, App-ID und LicenseCert
Lege im Developer-Portal eine App mit der App-ID deiner Anwendung an und stelle ein LicenseCert aus. Das Zertifikat ist 294 Byte groß, wird offline geprüft und gilt nur für genau diese App-ID. Details: Lizenzen, App-IDs & Mandanten.
2. Einbinden
Bindings und Bibliotheken erzeugen
bash
scripts/cross-build.sh # libuespa_ffi.so für alle Android-ABIs
scripts/gen-bindings.sh out/ # out/kotlin/uniffi/… in das App-Modul kopieren3. Initialisieren und senden
kotlin
val cert = Base64.decode(BuildConfig.UESPA_LICENSE, Base64.DEFAULT)
// hostAppId = applicationId, muss zur app_id des Zertifikats passen
val uespa = UespaClient(0u, BuildConfig.APPLICATION_ID, cert, deviceSeed)
uespa.busSubscribe("home/+/temp")
uespa.chatSend(peerPk, "Hallo")
val listener = object : UespaListener {
override fun onEvent(event: UespaEventKt) {
when (event) {
is UespaEventKt.ChatMessage -> show(event.from, event.text)
is UespaEventKt.BusMessage -> handle(event.topic, event.data)
else -> {}
}
}
}
// alle 50–100 ms aus einem Hintergrund-Thread
scope.launch(Dispatchers.IO) { while (isActive) { uespa.tick(listener); delay(50) } }Hinweise
- deviceSeed (32 Byte) im Android Keystore halten, nie aus dem Netz laden.
- Ohne Zertifikat (cert = null) läuft die Sandbox: 60 Minuten, max. 3 Geräte.
- Das Gerät leitet immer auch Pakete anderer Apps verschlüsselt weiter (Zwangs-Hop) – zugestellt wird nur im eigenen Namespace.
- Rendezvous für Internet-P2P: rendezvous.uespa.io:47401 (UDP), Authority: https://uespa.io/v1/authority.