open-standards/wai/wai-sink-android/settings.gradle.kts
Transaction Science b72652887d wai-sink-android: the native sink's Kotlin library over the C interface
An AAR for phones, tablets and televisions whose applications are written in
Kotlin (extensions/native-sink.md): a JNI layer over wai_sink_* (every status
carried to Kotlin with libwai's message, strings passed as UTF-8 bytes, a NUL
inside one refused); libwai and that layer built by cargo and the pinned NDK
(29.0.14206865) for arm64-v8a, armeabi-v7a and x86_64, linked for 16 KiB pages
and checked for it and for every exported method; the wrapper, the loopback
relay (128-bit path token, 502 for anything refused, ranges from what verified,
content codings removed), the observation loop, the collector client; the player
session over the platform's media player library and the attention signals from
the activity's lifecycle, the window's and display's state, the view's place in
its window and the window's input.

The platform-free half also compiles for the host JVM, so its unit tests drive
the JNI layer over a host build of libwai: the corpus live-conformance/native-sink
(every case, every refused configuration, the page-parity bundle byte for byte),
the relay over the reference floor, and the loop's hidden and idle endings. The
instrumented tests run in a headless emulator: the corpus and the relay on the
device, the floor played through the sink to its end, a changed fragment refused
on every retry, a session nobody can see ended hidden, and the attention signals
from a real activity. Pinned: AGP 8.13.0, Gradle 8.13 (by SHA-256), Kotlin
2.3.21, JDK 17, compileSdk 36, minSdk 24, the media player library 1.11.1.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 08:59:13 -04:00

45 lines
1.6 KiB
Kotlin

// The native sink for the platform player, in Kotlin (wai/extensions/native-sink.md):
// :sink the Android library (the AAR): the JNI layer's libraries for each ABI, the platform-free
// half below, and the player and attention integration;
// :core the platform-free half (the wrapper over the C interface, the loopback relay, the
// session's observation loop, the collector client), compiled for the host JVM too so
// its unit tests drive the JNI layer over a host build of libwai.
// `-Pwai.sink.jvmOnly=true` leaves :sink out, for a host with no Android SDK.
pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
plugins {
id("com.android.library") version "8.13.0"
id("org.jetbrains.kotlin.android") version "2.3.21"
id("org.jetbrains.kotlin.jvm") version "2.3.21"
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
}
}
rootProject.name = "wai-sink-android"
include(":core")
if (providers.gradleProperty("wai.sink.jvmOnly").orNull != "true") {
include(":sink")
}