From 006d592837259cac87f15cf3ffc99e7fce97685e Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Wed, 8 Oct 2025 07:53:35 -0300 Subject: [PATCH] fix(core): parse Android plugin args starting with `is`, closes #14254 (#14260) by default Jackson treats the `isX` as a getter, so it looks for the `x` key in the JSON. To match behavior on other platforms we now configure Jackson to treat it as the field name itself. --- .changes/android-plugin-bool-is-deserialize.md | 5 +++++ .../android/src/main/java/app/tauri/plugin/PluginManager.kt | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 .changes/android-plugin-bool-is-deserialize.md diff --git a/.changes/android-plugin-bool-is-deserialize.md b/.changes/android-plugin-bool-is-deserialize.md new file mode 100644 index 000000000..bf4eceac5 --- /dev/null +++ b/.changes/android-plugin-bool-is-deserialize.md @@ -0,0 +1,5 @@ +--- +"tauri": patch:bug +--- + +Properly deserialize Android plugin args with key starting with `is` (previously treated as a getter instead of a field name). diff --git a/crates/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt b/crates/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt index afa110cb9..6e6d0f604 100644 --- a/crates/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt +++ b/crates/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt @@ -17,6 +17,8 @@ import app.tauri.annotation.InvokeArg import app.tauri.FsUtils import app.tauri.JniMethod import app.tauri.Logger +import com.fasterxml.jackson.annotation.JsonAutoDetect +import com.fasterxml.jackson.annotation.PropertyAccessor import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.ObjectMapper @@ -69,6 +71,7 @@ class PluginManager(val activity: AppCompatActivity) { jsonMapper = ObjectMapper() .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) .enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES) + .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) val channelDeserializer = ChannelDeserializer({ channelId, payload -> sendChannelData(channelId, payload)