From 0dda5124df4310145c025382b91a0952982a3058 Mon Sep 17 00:00:00 2001 From: davidliu Date: Mon, 17 Nov 2025 14:53:59 +0900 Subject: [PATCH 1/4] Optimizations for proguard --- livekit-android-sdk/consumer-rules.pro | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/livekit-android-sdk/consumer-rules.pro b/livekit-android-sdk/consumer-rules.pro index 9c53650b..cf3744d7 100644 --- a/livekit-android-sdk/consumer-rules.pro +++ b/livekit-android-sdk/consumer-rules.pro @@ -13,28 +13,27 @@ } -keep,includedescriptorclasses class io.livekit.android.**$$serializer { *; } --keepclassmembers class io.livekit.android.** { - *** Companion; -} + -keepclasseswithmembers class io.livekit.android.** { kotlinx.serialization.KSerializer serializer(...); } # WebRTC ######################################### --keep class livekit.org.webrtc.** { *; } - -# JNI Zero initialization (required for WebRTC native method registration) --keep class livekit.org.jni_zero.JniInit { - # Keep the init method un-obfuscated for native code callback - private static java.lang.Object[] init(); +# Ensure java methods called from Native are preserved. +-keepclasseswithmembers,includedescriptorclasses class * { + @livekit.org.webrtc.CalledByNative ; +} +-keepclasseswithmembers,includedescriptorclasses class * { + @livekit.org.webrtc.CalledByNativeUnchecked ; } # NIST sdp parser ######################################### --keep class android.gov.nist.** { *; } --dontwarn com.sun.nio.sctp.** --dontwarn org.apache.log4j.** +# Preserve reflection used for Parser registrations +-keep class android.gov.nist.javax.sdp.parser.*Parser { *; } +-keep class android.gov.nist.javax.sdp.parser.ParserFactory { *; } +-keep class android.gov.nist.javax.sdp.parser.SDPParser { *; } # Protobuf ######################################### From 276dfd7ca2a5c05482610b88ad9a91eee59487b4 Mon Sep 17 00:00:00 2001 From: davidliu Date: Mon, 17 Nov 2025 15:01:32 +0900 Subject: [PATCH 2/4] changeset --- .changeset/two-sloths-tan.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/two-sloths-tan.md diff --git a/.changeset/two-sloths-tan.md b/.changeset/two-sloths-tan.md new file mode 100644 index 00000000..c32cd0fc --- /dev/null +++ b/.changeset/two-sloths-tan.md @@ -0,0 +1,5 @@ +--- +"client-sdk-android": patch +--- + +Proguard rule optimizations From 9ee62538951ce77204dd9b9391b076f3a68a6c2b Mon Sep 17 00:00:00 2001 From: davidliu Date: Tue, 16 Dec 2025 22:34:27 +0900 Subject: [PATCH 3/4] fix proguard to include jnizero which uses their own annotation --- livekit-android-sdk/consumer-rules.pro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/livekit-android-sdk/consumer-rules.pro b/livekit-android-sdk/consumer-rules.pro index cf3744d7..a3d65428 100644 --- a/livekit-android-sdk/consumer-rules.pro +++ b/livekit-android-sdk/consumer-rules.pro @@ -22,10 +22,10 @@ ######################################### # Ensure java methods called from Native are preserved. -keepclasseswithmembers,includedescriptorclasses class * { - @livekit.org.webrtc.CalledByNative ; + @livekit.**.CalledByNative ; } -keepclasseswithmembers,includedescriptorclasses class * { - @livekit.org.webrtc.CalledByNativeUnchecked ; + @livekit.**.CalledByNativeUnchecked ; } # NIST sdp parser From b994ef36022d640b283e6e802f760cabeea6c534 Mon Sep 17 00:00:00 2001 From: davidliu Date: Tue, 16 Dec 2025 22:35:03 +0900 Subject: [PATCH 4/4] Enable minifying and use debug signing for sample release variant --- sample-app-compose/build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sample-app-compose/build.gradle b/sample-app-compose/build.gradle index ecc4cd49..05cfe109 100644 --- a/sample-app-compose/build.gradle +++ b/sample-app-compose/build.gradle @@ -23,8 +23,10 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + // For testing purposes only. Use your own signing keys when making a production app. + signingConfig signingConfigs.debug } } compileOptions {