Two Java classes (MainActivity, NotificationService) hand their lifecycle to a new android-shell crate built on client-core; client-core gains notifications.rs (the /notifications SSE parse and attention_line, ported from Notifications.kt). Packaged as a new app/shellApp Gradle module rather than a rewrite of app/androidApp in place, so that module's working Compose UI is untouched. Both pass conditions held on the emulator: a notification arrived in Android's drawer with the app closed, and a shared text share landed as a real message in a sandbox session's transcript. Found and fixed three real bugs along the way (a silently-wrong JNI signature from a generic JObject parameter, a class-by-name lookup failing on this crate's own background thread for lack of an app ClassLoader, and onStartCommand opening two /notifications connections per enrollment -- the last a latent bug in Notifications.kt itself). Full account, exact commands and what was deliberately cut are in RUST.md's E3 box. Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
31 lines
807 B
Kotlin
31 lines
807 B
Kotlin
rootProject.name = "AiApp"
|
|
|
|
pluginManagement {
|
|
repositories {
|
|
google()
|
|
gradlePluginPortal()
|
|
mavenCentral()
|
|
}
|
|
}
|
|
|
|
dependencyResolutionManagement {
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
}
|
|
}
|
|
|
|
include(":androidApp")
|
|
|
|
// E3 (RUST.md): the Kotlin/Java shell over android-shell's JNI bridge, a
|
|
// separate module from :androidApp so the ~13,000 lines of working Compose
|
|
// UI there are untouched. See shellApp/build.gradle.kts's module comment.
|
|
include(":shellApp")
|
|
|
|
// The app half of wg-app-link, resolved by path through the submodule so
|
|
// this checkout and the crate it consumes move together -- the same
|
|
// arrangement `server/` uses for the Rust half. See that repo's README.
|
|
include(":link")
|
|
|
|
project(":link").projectDir = file("../wg-app-link/app")
|