feat: integrate chat voice and diagnostics client
This commit is contained in:
@@ -69,8 +69,8 @@ android {
|
||||
// Per-ABI delivery is handled by the AAB bundle splits below
|
||||
// (SDD-109 item 2) rather than a fat APK.
|
||||
ndk {
|
||||
// DEC-032 RESOLVED (2026-05-18): canonical three-ABI set
|
||||
// restored after the audiopus_sys + cmake-rs + NDK toolchain-file
|
||||
// DEC-032 RESOLVED (2026-05-18): canonical two-ABI set
|
||||
// (arm64-v8a + x86_64) restored after the audiopus_sys
|
||||
// ANDROID_ABI propagation gap was closed by the workspace
|
||||
// [patch.crates-io] override pinning `cmake` to the fork
|
||||
// carrying cmake-rs PR #257 (forwards ANDROID_ABI /
|
||||
@@ -138,9 +138,10 @@ android {
|
||||
}
|
||||
|
||||
// SDD-109 item 2: Android App Bundle (.aab) split configuration.
|
||||
// Combined with the SDD-073 abiFilters set, this yields three
|
||||
// native splits (arm64-v8a, armeabi-v7a, x86_64), per-language
|
||||
// resource delivery, and per-density resource delivery.
|
||||
// Combined with the SDD-073 abiFilters set, this yields two
|
||||
// native splits (arm64-v8a, x86_64), per-language resource
|
||||
// delivery, and per-density resource delivery. Each device
|
||||
// receives only its matching ABI .so — no cross-ABI bundling.
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = true
|
||||
@@ -221,7 +222,6 @@ val chanoraAndroidMinSdk: Provider<String> =
|
||||
// for the per-ABI copy and for the inputs/outputs declaration.
|
||||
val abiToRustTriple: Map<String, String> = mapOf(
|
||||
"arm64-v8a" to "aarch64-linux-android",
|
||||
"armeabi-v7a" to "armv7-linux-androideabi",
|
||||
"x86_64" to "x86_64-linux-android",
|
||||
)
|
||||
|
||||
@@ -278,7 +278,7 @@ val checkRustBridgeToolchain = tasks.register("checkRustBridgeToolchain") {
|
||||
if (missing.isNotEmpty()) {
|
||||
throw GradleException(
|
||||
"[SDD-118] Missing Android Rust target(s): ${missing.joinToString(", ")}. " +
|
||||
"Install: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android"
|
||||
"Install: rustup target add aarch64-linux-android x86_64-linux-android"
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -312,6 +312,15 @@ fun registerCargoNdkBuildTask(profile: String): TaskProvider<*> {
|
||||
.takeUnless { it.isNullOrBlank() }
|
||||
?: android.ndkDirectory.absolutePath
|
||||
val cmakeToolchainFile = "$effectiveNdkPath/build/cmake/android.toolchain.cmake"
|
||||
val homeDir = System.getenv("HOME") ?: System.getProperty("user.home")
|
||||
val rustupBinDir = listOf(
|
||||
"$homeDir/.cargo/bin",
|
||||
"/opt/homebrew/opt/rustup/bin",
|
||||
"/usr/local/opt/rustup/bin"
|
||||
).firstOrNull { File(it).resolve("cargo").exists() }
|
||||
val rustupHome = System.getenv("RUSTUP_HOME") ?: "$homeDir/.rustup"
|
||||
val cargoHome = System.getenv("CARGO_HOME") ?: "$homeDir/.cargo"
|
||||
val rustupToolchain = System.getenv("RUSTUP_TOOLCHAIN") ?: "stable-aarch64-apple-darwin"
|
||||
|
||||
// SDD-118 item 13 (corrected): per-ABI Exec sub-tasks. Each runs an
|
||||
// isolated `cargo ndk -t <abi> ... -- build ...` so ANDROID_ABI is set
|
||||
@@ -361,15 +370,18 @@ fun registerCargoNdkBuildTask(profile: String): TaskProvider<*> {
|
||||
// Any CARGO_TARGET_* env vars set by an outer build wrapper
|
||||
val cleanEnv = buildMap<String, String> {
|
||||
// Pass-through from the calling environment, only the safe set.
|
||||
System.getenv("PATH")?.let { put("PATH", it) }
|
||||
System.getenv("HOME")?.let { put("HOME", it) }
|
||||
System.getenv("PATH")?.let { path ->
|
||||
put("PATH", listOfNotNull(rustupBinDir, path).joinToString(":"))
|
||||
}
|
||||
put("HOME", homeDir)
|
||||
System.getenv("USER")?.let { put("USER", it) }
|
||||
System.getenv("TMPDIR")?.let { put("TMPDIR", it) }
|
||||
System.getenv("TEMP")?.let { put("TEMP", it) }
|
||||
System.getenv("LANG")?.let { put("LANG", it) }
|
||||
System.getenv("LC_ALL")?.let { put("LC_ALL", it) }
|
||||
System.getenv("CARGO_HOME")?.let { put("CARGO_HOME", it) }
|
||||
System.getenv("RUSTUP_HOME")?.let { put("RUSTUP_HOME", it) }
|
||||
put("CARGO_HOME", cargoHome)
|
||||
put("RUSTUP_HOME", rustupHome)
|
||||
put("RUSTUP_TOOLCHAIN", rustupToolchain)
|
||||
System.getenv("JAVA_HOME")?.let { put("JAVA_HOME", it) }
|
||||
// Per-task explicit settings (override any pass-through).
|
||||
// SDD-118 item 5: audiopus_sys needs libopus built from source
|
||||
@@ -444,7 +456,6 @@ val buildRustBridgeRelease = registerCargoNdkBuildTask("release")
|
||||
// $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/.
|
||||
val abiToNdkSysrootTriple: Map<String, String> = mapOf(
|
||||
"arm64-v8a" to "aarch64-linux-android",
|
||||
"armeabi-v7a" to "arm-linux-androideabi",
|
||||
"x86_64" to "x86_64-linux-android",
|
||||
)
|
||||
fun registerJniLibsCopyTask(profile: String): TaskProvider<Copy> {
|
||||
|
||||
Reference in New Issue
Block a user