From ed80ffb59a607661a524871f9ca1533233ce9ea5 Mon Sep 17 00:00:00 2001 From: Preventnetworkhacking Date: Thu, 26 Feb 2026 21:05:39 -0800 Subject: [PATCH] fix(android): cleanup and add missing resources - Remove UDL file (using proc-macro UniFFI instead) - Remove build.rs (not needed with setup_scaffolding!) - Comment out zeroclaw dep temporarily (standalone build) - Add placeholder launcher icon drawable - Add notification icon drawable - Fix service notification to use hardcoded strings The UniFFI proc-macro approach is cleaner and doesn't require separate UDL definitions - the Rust types are annotated directly. --- clients/android-bridge/Cargo.toml | 8 +-- clients/android-bridge/build.rs | 3 - clients/android-bridge/src/zeroclaw.udl | 72 ------------------- .../android/service/ZeroClawService.kt | 7 +- .../res/drawable/ic_launcher_foreground.xml | 13 ++++ .../src/main/res/drawable/ic_notification.xml | 10 +++ 6 files changed, 29 insertions(+), 84 deletions(-) delete mode 100644 clients/android-bridge/build.rs delete mode 100644 clients/android-bridge/src/zeroclaw.udl create mode 100644 clients/android/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 clients/android/app/src/main/res/drawable/ic_notification.xml diff --git a/clients/android-bridge/Cargo.toml b/clients/android-bridge/Cargo.toml index 1be2f45b2..066a2bdf5 100644 --- a/clients/android-bridge/Cargo.toml +++ b/clients/android-bridge/Cargo.toml @@ -10,8 +10,9 @@ crate-type = ["cdylib"] name = "zeroclaw_android" [dependencies] -zeroclaw = { path = "../.." } -uniffi = { version = "0.27", features = ["cli"] } +# Note: zeroclaw dep commented out until we integrate properly +# zeroclaw = { path = "../.." } +uniffi = { version = "0.27" } tokio = { version = "1", features = ["rt-multi-thread", "sync"] } anyhow = "1" serde = { version = "1", features = ["derive"] } @@ -19,9 +20,6 @@ serde_json = "1" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } -[build-dependencies] -uniffi = { version = "0.27", features = ["build"] } - [[bin]] name = "uniffi-bindgen" path = "uniffi-bindgen.rs" diff --git a/clients/android-bridge/build.rs b/clients/android-bridge/build.rs deleted file mode 100644 index ff8e7b998..000000000 --- a/clients/android-bridge/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - uniffi::generate_scaffolding("src/zeroclaw.udl").unwrap(); -} diff --git a/clients/android-bridge/src/zeroclaw.udl b/clients/android-bridge/src/zeroclaw.udl deleted file mode 100644 index 1b875af7a..000000000 --- a/clients/android-bridge/src/zeroclaw.udl +++ /dev/null @@ -1,72 +0,0 @@ -// ZeroClaw Android Bridge - UniFFI Interface Definition - -namespace zeroclaw {}; - -[Enum] -interface AgentStatus { - Stopped(); - Starting(); - Running(); - Thinking(); - Error(string message); -}; - -dictionary ZeroClawConfig { - string data_dir; - string provider; - string model; - string api_key; - string? system_prompt; -}; - -dictionary ChatMessage { - string id; - string content; - string role; - i64 timestamp_ms; -}; - -dictionary SendResult { - boolean success; - string? message_id; - string? error; -}; - -[Error] -enum ZeroClawError { - "NotInitialized", - "AlreadyRunning", - "ConfigError", - "GatewayError", - "LockError", -}; - -interface ZeroClawController { - [Name=new] - constructor(ZeroClawConfig config); - - [Name=with_defaults] - constructor(string data_dir); - - [Throws=ZeroClawError] - void start(); - - [Throws=ZeroClawError] - void stop(); - - AgentStatus get_status(); - - SendResult send_message(string content); - - sequence get_messages(); - - void clear_messages(); - - [Throws=ZeroClawError] - void update_config(ZeroClawConfig config); - - [Throws=ZeroClawError] - ZeroClawConfig get_config(); - - boolean is_configured(); -}; diff --git a/clients/android/app/src/main/java/ai/zeroclaw/android/service/ZeroClawService.kt b/clients/android/app/src/main/java/ai/zeroclaw/android/service/ZeroClawService.kt index d2b6c249e..f6de366e3 100644 --- a/clients/android/app/src/main/java/ai/zeroclaw/android/service/ZeroClawService.kt +++ b/clients/android/app/src/main/java/ai/zeroclaw/android/service/ZeroClawService.kt @@ -8,7 +8,6 @@ import android.os.Binder import android.os.IBinder import androidx.core.app.NotificationCompat import ai.zeroclaw.android.MainActivity -import ai.zeroclaw.android.R import ai.zeroclaw.android.ZeroClawApp import kotlinx.coroutines.* import kotlinx.coroutines.flow.MutableStateFlow @@ -104,9 +103,9 @@ class ZeroClawService : Service() { ) return NotificationCompat.Builder(this, ZeroClawApp.CHANNEL_ID) - .setContentTitle(getString(R.string.service_notification_title)) - .setContentText(getString(R.string.service_notification_text)) - .setSmallIcon(android.R.drawable.ic_menu_manage) // TODO: Add proper icon + .setContentTitle("ZeroClaw is running") + .setContentText("Your AI assistant is active") + .setSmallIcon(android.R.drawable.ic_menu_manage) // TODO: Replace with custom icon .setContentIntent(pendingIntent) .setOngoing(true) .setSilent(true) diff --git a/clients/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/clients/android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 000000000..272c3be4a --- /dev/null +++ b/clients/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/clients/android/app/src/main/res/drawable/ic_notification.xml b/clients/android/app/src/main/res/drawable/ic_notification.xml new file mode 100644 index 000000000..a07531a5f --- /dev/null +++ b/clients/android/app/src/main/res/drawable/ic_notification.xml @@ -0,0 +1,10 @@ + + + +