diff --git a/src/frontends/android/app/build.gradle b/src/frontends/android/app/build.gradle index 06ec3a8dc..6e2a10c43 100644 --- a/src/frontends/android/app/build.gradle +++ b/src/frontends/android/app/build.gradle @@ -45,8 +45,8 @@ android { minSdk = 24 targetSdk = 36 - versionCode 160 - versionName "2.15.0" + versionCode 161 + versionName "2.15.1" /* Base URL of the update storage, trailing slash included */ buildConfigField "String", "UPDATE_BASE_URL", "\"${updateBaseUrl}\"" diff --git a/src/frontends/android/app/proguard-rules.txt b/src/frontends/android/app/proguard-rules.txt index 2def79d82..785f3e746 100644 --- a/src/frontends/android/app/proguard-rules.txt +++ b/src/frontends/android/app/proguard-rules.txt @@ -58,3 +58,9 @@ # --- squash warnings for optional dependencies referenced only from XML --- -dontwarn org.bouncycastle.jsse.util.** + +# --- Room databases are instantiated reflectively (WorkManager's WorkDatabase_Impl) --- + +-keep class * extends androidx.room.RoomDatabase { + (); +} diff --git a/src/frontends/android/gradle.properties b/src/frontends/android/gradle.properties index 04d2e29c1..40ee7244f 100644 --- a/src/frontends/android/gradle.properties +++ b/src/frontends/android/gradle.properties @@ -2,3 +2,7 @@ android.enableJetifier=false android.nonTransitiveRClass=false android.useAndroidX=true org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 +# AGP 9 strict full mode: "-keep class X" no longer keeps X's no-arg constructor, +# which strips reflectively created classes (WorkManager's WorkDatabase_Impl +# crashed 2.15.0 at startup). Keep the AGP 8 keep-rule semantics. +android.r8.strictFullModeForKeepRules=false