feat: Samsung lock screen face widget, voice assistant services, PiP mode and gitignore installers
Add Samsung proprietary Face Widget (lock screen/AOD) with terminal status display. Add voice interaction services (AgentVoiceInteractionService, RecognitionService) for digital assistant registration. Add PiP mode with voice/expand actions. Add session-state proxy, voice transcript routes, window controls component. Ignore installers/ directory.
This commit is contained in:
@@ -45,8 +45,9 @@ android {
|
||||
}
|
||||
}
|
||||
getByName("release") {
|
||||
manifestPlaceholders["usesCleartextTraffic"] = "true"
|
||||
signingConfig = signingConfigs.getByName("release")
|
||||
isMinifyEnabled = true
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
*fileTree(".") { include("**/*.pro") }
|
||||
.plus(getDefaultProguardFile("proguard-android-optimize.txt"))
|
||||
@@ -80,7 +81,8 @@ dependencies {
|
||||
|
||||
apply(from = "tauri.build.gradle.kts")
|
||||
|
||||
// Copy APK to src-tauri/installers after build
|
||||
// Copy APK after build: local installers/ + network backup
|
||||
// Only the universal signed variant gets copied as agent-ui.apk
|
||||
android.applicationVariants.all {
|
||||
val variant = this
|
||||
variant.outputs.all {
|
||||
@@ -88,9 +90,36 @@ android.applicationVariants.all {
|
||||
variant.assembleProvider.get().doLast {
|
||||
val src = output.outputFile
|
||||
if (src.exists()) {
|
||||
val dest = file("../../../../installers/AgentUI-${variant.versionName}-${variant.name}.apk")
|
||||
src.copyTo(dest, overwrite = true)
|
||||
println(">> Copied APK to ${dest.absolutePath}")
|
||||
val localDir = file("../../../../installers")
|
||||
localDir.mkdirs()
|
||||
|
||||
// Always save versioned copy per variant
|
||||
val localVersioned = File(localDir, "AgentUI-${variant.versionName}-${variant.name}.apk")
|
||||
src.copyTo(localVersioned, overwrite = true)
|
||||
println(">> Copied APK to ${localVersioned.absolutePath}")
|
||||
|
||||
// agent-ui.apk = only the universal signed build
|
||||
val isUniversal = variant.name.contains("universal", ignoreCase = true)
|
||||
val isSigned = variant.signingConfig != null
|
||||
if (isUniversal && isSigned) {
|
||||
val localFixed = File(localDir, "agent-ui.apk")
|
||||
src.copyTo(localFixed, overwrite = true)
|
||||
println(">> Copied universal signed APK to ${localFixed.absolutePath}")
|
||||
|
||||
// Network backup
|
||||
val networkDir = File("\\\\Memoria-1\\ActiveBackupforBusiness\\Nucleo v3\\agent-ui-apk")
|
||||
try {
|
||||
if (networkDir.exists() || networkDir.mkdirs()) {
|
||||
val networkFile = File(networkDir, "agent-ui.apk")
|
||||
src.copyTo(networkFile, overwrite = true)
|
||||
println(">> Copied APK to network: ${networkFile.absolutePath}")
|
||||
} else {
|
||||
println(">> WARNING: Network path not available: $networkDir")
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
println(">> WARNING: Failed to copy to network: ${e.message}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user