From 1b7af47fb531e108c69af09607bde1677545a7f2 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Wed, 4 Feb 2026 09:29:00 +1100 Subject: [PATCH 1/7] Includes R8 rules --- library/proguard-rules.pro | 16 ++-------------- library/src/main/cpp/config_base.cpp | 26 +++++++++++++++++++++----- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/library/proguard-rules.pro b/library/proguard-rules.pro index 481bb43..b290db3 100644 --- a/library/proguard-rules.pro +++ b/library/proguard-rules.pro @@ -5,17 +5,5 @@ # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file +-keep class network.loki.messenger.libsession_util.** { *; } +-keepnames class network.loki.messenger.libsession_util.** { *; } diff --git a/library/src/main/cpp/config_base.cpp b/library/src/main/cpp/config_base.cpp index 5c07ec4..077a1fd 100644 --- a/library/src/main/cpp/config_base.cpp +++ b/library/src/main/cpp/config_base.cpp @@ -4,11 +4,27 @@ std::pair> extractHashAndData(JNIEnv *env, jobject kotlin_pair) { - jni_utils::JavaLocalRef pair(env, env->GetObjectClass(kotlin_pair)); - jfieldID first = env->GetFieldID(pair.get(), "first", "Ljava/lang/Object;"); - jfieldID second = env->GetFieldID(pair.get(), "second", "Ljava/lang/Object;"); - auto hash_as_jstring = jni_utils::JavaLocalRef(env, reinterpret_cast(env->GetObjectField(kotlin_pair, first))); - auto data_as_jbytes = jni_utils::JavaLocalRef(env, reinterpret_cast(env->GetObjectField(kotlin_pair, second))); + struct KotlinPairClass : jni_utils::JavaClassInfo { + jmethodID get_first; + jmethodID get_second; + + KotlinPairClass(JNIEnv *env, jobject obj) + : JavaClassInfo(env, obj) + , get_first(env->GetMethodID(java_class, "getFirst", "()Ljava/lang/Object;")) + , get_second(env->GetMethodID(java_class, "getSecond", "()Ljava/lang/Object;")) {} + }; + + static KotlinPairClass pair_class(env, kotlin_pair); + + jni_utils::JavaLocalRef hash_as_jstring( + env, + reinterpret_cast(env->CallObjectMethod(kotlin_pair, pair_class.get_first)) + ); + + jni_utils::JavaLocalRef data_as_jbytes( + env, + reinterpret_cast(env->CallObjectMethod(kotlin_pair, pair_class.get_second)) + ); return std::make_pair( std::string(jni_utils::JavaStringRef(env, hash_as_jstring.get()).view()), From f0b688d8e0d541fd5930b288b0938f03f3b8ceee Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Wed, 4 Feb 2026 09:32:41 +1100 Subject: [PATCH 2/7] Compile issue --- library/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/build.gradle.kts b/library/build.gradle.kts index a57535c..7d62f0c 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -24,7 +24,7 @@ android { externalNativeBuild { cmake { - arguments += listOf("-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON") + arguments += listOf("-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON", "-DCMAKE_POLICY_VERSION_MINIMUM=3.5") targets("session_util") } } From 7a5745e30ba30923f325fb54625915f3b4cdfebc Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Wed, 4 Feb 2026 09:45:50 +1100 Subject: [PATCH 3/7] Keep rules --- .../java/network/loki/messenger/libsession_util/util/Logger.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/src/main/java/network/loki/messenger/libsession_util/util/Logger.kt b/library/src/main/java/network/loki/messenger/libsession_util/util/Logger.kt index 60ded2d..2860864 100644 --- a/library/src/main/java/network/loki/messenger/libsession_util/util/Logger.kt +++ b/library/src/main/java/network/loki/messenger/libsession_util/util/Logger.kt @@ -1,8 +1,11 @@ package network.loki.messenger.libsession_util.util +import androidx.annotation.Keep + typealias LogLevel = Int interface Logger { + @Keep fun log(message: String, category: String, level: LogLevel) companion object { From 70d6c6893d65d868e6fb1e24cfbfb4904cce3321 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Wed, 4 Feb 2026 10:00:24 +1100 Subject: [PATCH 4/7] Consumer proguard rules --- library/build.gradle.kts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 7d62f0c..dc2df62 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -40,10 +40,7 @@ android { buildTypes { release { isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) + consumerProguardFile(file("proguard-rules.pro")) externalNativeBuild { cmake { From 52cf1535beb7db818e6a6578fdfdd52e8d70ce49 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Wed, 4 Feb 2026 10:13:11 +1100 Subject: [PATCH 5/7] Pair classes --- library/proguard-rules.pro | 1 + 1 file changed, 1 insertion(+) diff --git a/library/proguard-rules.pro b/library/proguard-rules.pro index b290db3..2d679b3 100644 --- a/library/proguard-rules.pro +++ b/library/proguard-rules.pro @@ -7,3 +7,4 @@ -keep class network.loki.messenger.libsession_util.** { *; } -keepnames class network.loki.messenger.libsession_util.** { *; } +-keep class kotlin.Pair { *; } \ No newline at end of file From 4ae3baf42e1ad232742edca072f32cb335eba026 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Wed, 4 Feb 2026 10:15:48 +1100 Subject: [PATCH 6/7] Triple class --- library/proguard-rules.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/proguard-rules.pro b/library/proguard-rules.pro index 2d679b3..d790fc8 100644 --- a/library/proguard-rules.pro +++ b/library/proguard-rules.pro @@ -7,4 +7,5 @@ -keep class network.loki.messenger.libsession_util.** { *; } -keepnames class network.loki.messenger.libsession_util.** { *; } --keep class kotlin.Pair { *; } \ No newline at end of file +-keep class kotlin.Pair { *; } +-keep class kotlin.Triple { *; } \ No newline at end of file From 07fa4f295edb67e0c0769ffb49cd650d250115e0 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Tue, 10 Feb 2026 12:26:11 +1100 Subject: [PATCH 7/7] Update libsession-util --- libsession-util | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsession-util b/libsession-util index a8c935f..09aeda6 160000 --- a/libsession-util +++ b/libsession-util @@ -1 +1 @@ -Subproject commit a8c935fe2a3ece8a686154abd0c6bb18378ce3f5 +Subproject commit 09aeda690d2ef8066b438497ddbf9495595fbdab