Each example holds the license's text as LICENSE (wai/LICENSE, byte for byte) and says so in its README; wai create writes it with the rest of the template, from one copy in the binary. Co-Authored-By: Claude Opus 5.5 <[email protected]>
32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# The native sink in Kotlin, for Android
|
|
|
|
**What it shows.** The WAI native sink's Kotlin API, the one an Android app calls. A recorded
|
|
playback session goes through the sink call by call: each playlist verified against its
|
|
receipt, each object against the hash its name states, the player's observations, its end.
|
|
The sink signs an acknowledgement of what was received and, at the end, a bundle; the program
|
|
verifies the bundle as the stream's owner does.
|
|
|
|
**Run it.** The sink is the `wai-sink-android` project of the WAI repository; build its host
|
|
library once (JDK 17 and Rust), then point this project at it:
|
|
|
|
```sh
|
|
wai create my-android --template android-app
|
|
cd <your clone>/wai/wai-sink-android && scripts/build-native.sh host
|
|
cd my-android
|
|
export WAI_SINK_ANDROID=<your clone>/wai/wai-sink-android
|
|
gradle :replay:run # Gradle 8.13, as the SDK pins it
|
|
```
|
|
|
|
**What you see.** How many playlists and objects went through the sink, and that the bundle
|
|
verifies.
|
|
|
|
**In an Android app.** Build the SDK's AAR (`scripts/gradle.sh :sink:assembleRelease`, with the
|
|
Android SDK and NDK) and give the player a `WaiPlayerSession(context, url, config,
|
|
WaiViewAttention(view))`: the same calls, on the path of the player's requests. The SDK's
|
|
README covers it.
|
|
|
|
**With a coding assistant.** Run `wai setup-agent` in this directory: it writes the
|
|
instructions an assistant reads and connects it to WAI's tools.
|
|
|
|
**License.** Apache-2.0: the text is in `LICENSE`, and a project `wai create` makes from this
|
|
example carries it.
|