summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2023-06-11 17:02:36 -0400
committerGitHub <noreply@github.com>2023-06-11 17:02:36 -0400
commit157deb586430f2547b9002adbbf8bf91bcb1ace1 (patch)
treee706b65777e5a24520fd0004438b3b857c18057d /Source/Android
parent8db5775a1bfbeb09fc06870501a424331b8dfdae (diff)
parent6f55b26751163b0698af220918b9324d1c437989 (diff)
Merge pull request #11928 from K0bin/adrenotools-release-build-fix
Android: Fix Adrenotools in release builds
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/app/build.gradle4
-rw-r--r--Source/Android/app/proguard-rules.pro40
2 files changed, 44 insertions, 0 deletions
diff --git a/Source/Android/app/build.gradle b/Source/Android/app/build.gradle
index 3ad867b2a6..c9c9942f88 100644
--- a/Source/Android/app/build.gradle
+++ b/Source/Android/app/build.gradle
@@ -128,6 +128,10 @@ android {
}
}
}
+
+ packagingOptions {
+ jniLibs.useLegacyPackaging = true
+ }
}
dependencies {
diff --git a/Source/Android/app/proguard-rules.pro b/Source/Android/app/proguard-rules.pro
index 985cc25961..5ed4a21dce 100644
--- a/Source/Android/app/proguard-rules.pro
+++ b/Source/Android/app/proguard-rules.pro
@@ -1,3 +1,43 @@
# Being able to get sensible stack traces from users is more important
# than the space savings obfuscation could give us
-dontobfuscate
+
+#
+# Kotlin Serialization
+#
+
+# Keep `Companion` object fields of serializable classes.
+# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects.
+-if @kotlinx.serialization.Serializable class **
+-keepclassmembers class <1> {
+ static <1>$Companion Companion;
+}
+
+# Keep `serializer()` on companion objects (both default and named) of serializable classes.
+-if @kotlinx.serialization.Serializable class ** {
+ static **$* *;
+}
+-keepclassmembers class <2>$<3> {
+ kotlinx.serialization.KSerializer serializer(...);
+}
+
+# Keep `INSTANCE.serializer()` of serializable objects.
+-if @kotlinx.serialization.Serializable class ** {
+ public static ** INSTANCE;
+}
+-keepclassmembers class <1> {
+ public static <1> INSTANCE;
+ kotlinx.serialization.KSerializer serializer(...);
+}
+
+# @Serializable and @Polymorphic are used at runtime for polymorphic serialization.
+-keepattributes RuntimeVisibleAnnotations,AnnotationDefault
+
+# Don't print notes about potential mistakes or omissions in the configuration for kotlinx-serialization classes
+# See also https://github.com/Kotlin/kotlinx.serialization/issues/1900
+-dontnote kotlinx.serialization.**
+
+# Serialization core uses `java.lang.ClassValue` for caching inside these specified classes.
+# If there is no `java.lang.ClassValue` (for example, in Android), then R8/ProGuard will print a warning.
+# However, since in this case they will not be used, we can disable these warnings
+-dontwarn kotlinx.serialization.internal.ClassValueReferences