open-standards/wai/examples/android-app/README.md
Transaction Science e8c8327631 wai/examples: every template Apache-2.0, its LICENSE carried into the project
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]>
2026-10-27 04:52:31 -04:00

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.