diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..de82775 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 0.5.25 - 2026-08-27 + +- Add keep consumer rules for JNA types UniFFI needs under R8. diff --git a/Cargo.lock b/Cargo.lock index fadd3d7..48c55e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2013,7 +2013,7 @@ dependencies = [ [[package]] name = "vss-rust-client-ffi" -version = "0.5.24" +version = "0.5.25" dependencies = [ "bip39", "bitcoin", diff --git a/Cargo.toml b/Cargo.toml index a82da74..17a463f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vss-rust-client-ffi" -version = "0.5.24" +version = "0.5.25" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/Package.swift b/Package.swift index 0b4b95f..4e7bfcd 100644 --- a/Package.swift +++ b/Package.swift @@ -3,8 +3,8 @@ import PackageDescription -let tag = "v0.5.24" -let checksum = "655f78dfce27e58ae37ab448e03d36186182cc9066d7bcf0341a5e6787330b7a" +let tag = "v0.5.25" +let checksum = "543245da55335b3db3656e2c7765ef96948d01ca2e3b5903dc35e3990319bd4e" let url = "https://github.com/synonymdev/vss-rust-client-ffi/releases/download/\(tag)/VssRustClientFfi.xcframework.zip" let package = Package( diff --git a/bindings/android/consumer-rules.pro b/bindings/android/consumer-rules.pro index 7aca292..a516308 100644 --- a/bindings/android/consumer-rules.pro +++ b/bindings/android/consumer-rules.pro @@ -21,8 +21,21 @@ native ; } -# @Structure.FieldOrder is read at runtime. +# JNA reads Structure.FieldOrder at runtime. R8 full mode strips that +# annotation unless the annotation type and annotated classes are kept. -keepattributes RuntimeVisibleAnnotations +-keep,allowshrinking,allowoptimization class com.sun.jna.Structure$FieldOrder +-keep,allowshrinking,allowoptimization,allowobfuscation @com.sun.jna.Structure$FieldOrder class com.synonym.vssclient.** { + ; + (...); +} + +# libjnidispatch looks up Native/Structure/CallbackReference members by JNI name. +# Subclasses such as com.sun.jna.ptr.IntByReference are kept by the extends rules. +# See https://github.com/java-native-access/jna/blob/master/www/FrequentlyAskedQuestions.md#jna-on-android +-keep class com.sun.jna.* { *; } +-keep class * extends com.sun.jna.* { *; } +-keepclassmembers class * extends com.sun.jna.* { public *; } # JNA's AAR references desktop AWT types that are absent on Android. -dontwarn java.awt.Component diff --git a/bindings/android/gradle.properties b/bindings/android/gradle.properties index b241cfb..3a15e0f 100644 --- a/bindings/android/gradle.properties +++ b/bindings/android/gradle.properties @@ -3,4 +3,4 @@ android.useAndroidX=true android.nonTransitiveRClass=true kotlin.code.style=official # project settings: -version=0.5.24 +version=0.5.25