From d7d408e6dcf8365255f2275fca0aad112367bd17 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 17 Aug 2023 11:57:22 +0200 Subject: [PATCH 1/2] Enable proguard in debug builds even though for some crazy reason it would not have caught the io.netty.util.ReferenceCountUtil issue --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a584c286..7e2f5eeb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,7 +44,7 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } benchmark { From d0fbfa8c046eb9c745d2503c9c9abf04aed0ab20 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 17 Aug 2023 11:59:53 +0200 Subject: [PATCH 2/2] Add important proguard rules to keep Netty classes Issues with those only manifest in release builds with proguard turned on. This commit also removes some proguard warnings related to Netty. --- app/proguard-rules.pro | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 4c89c9e7..c0eb2575 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -21,8 +21,26 @@ #-renamesourcefileattribute SourceFile -dontobfuscate +-keepattributes SourceFile, LineNumberTable, *Annotation*, Signature, InnerClasses, EnclosingMethod + -keep class org.onionshare.android.** { *; } -keep class org.torproject.jni.** { *; } --keep class ch.qos.** { *; } --keep class org.slf4j.** { *; } +# Keep logging +-keep public class org.slf4j.** { *; } +-keep public class ch.qos.logback.** { *; } + +# Keep Netty classes that are loaded via reflection +-keep class io.netty.util.ReferenceCountUtil { *; } +-keep class io.netty.buffer.WrappedByteBuf { *; } + +-dontwarn com.fasterxml.jackson.databind.ext.Java7SupportImpl +-dontwarn io.netty.internal.tcnative.* +-dontwarn java.lang.management.* +-dontwarn org.apache.log4j.* +-dontwarn org.apache.logging.log4j.** +-dontwarn org.conscrypt.* +-dontwarn org.eclipse.jetty.npn.* +-dontwarn org.jetbrains.annotations.* +-dontwarn reactor.blockhound.integration.BlockHoundIntegration +-dontwarn javax.mail.**