From d9695acec903984bdfa20bcdf16ba3145ce00dc9 Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Mon, 13 Apr 2026 02:44:36 +0530 Subject: [PATCH] minify build --- composeApp/build.gradle.kts | 7 ++++++- composeApp/proguard-rules.pro | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 composeApp/proguard-rules.pro diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index c3a0dc86..b395c414 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -318,7 +318,12 @@ android { } buildTypes { getByName("release") { - isMinifyEnabled = false + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) signingConfig = signingConfigs.getByName("release") ndk { debugSymbolLevel = "FULL" diff --git a/composeApp/proguard-rules.pro b/composeApp/proguard-rules.pro new file mode 100644 index 00000000..ee512489 --- /dev/null +++ b/composeApp/proguard-rules.pro @@ -0,0 +1,39 @@ +# Project-specific ProGuard rules for composeApp Android release builds. + +# Keep useful metadata for crash reports. +-keepattributes SourceFile,LineNumberTable +-renamesourcefileattribute SourceFile + +# Preserve Kotlin metadata/signatures needed by reflection/generics-heavy libraries. +-keepattributes *Annotation* +-keepattributes Signature +-keepattributes InnerClasses +-keepattributes EnclosingMethod +-keepattributes RuntimeVisibleAnnotations + +# Ktor / Supabase client stack (runtime reflective paths in serializers/plugins). +-keep class io.github.jan.supabase.** { *; } +-keep class io.ktor.** { *; } +-dontwarn io.ktor.** + +# Keep @Serializable generated serializers. +-keepclassmembers class * { + kotlinx.serialization.KSerializer serializer(...); +} + +# QuickJS plugin runtime is dynamic; keep runtime and app plugin classes. +-keep class com.dokar.quickjs.** { *; } +-keep class com.nuvio.app.features.plugins.** { *; } + +# Media3 / ExoPlayer classes from local AAR decoders and stock modules. +-dontwarn androidx.media3.** +-keep class androidx.media3.** { *; } +-keep interface androidx.media3.** { *; } +-keep class com.google.android.exoplayer2.** { *; } +-keep interface com.google.android.exoplayer2.** { *; } + +# Common optional security providers used by okhttp on some devices. +-dontwarn okhttp3.internal.platform.** +-dontwarn org.conscrypt.** +-dontwarn org.bouncycastle.** +-dontwarn org.openjsse.**