mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-11 19:53:53 +01:00
The previous commit disabled isMinifyEnabled/isShrinkResources as a crash workaround (AGP 9 default minification stripped WorkDatabase_Impl's no-arg constructor). This commit adds the proper fix: - new android/app/proguard-rules.pro: keeps the no-arg constructor on all RoomDatabase subclasses (the gap the Room AAR's own consumer rule misses — it keeps the class name but not the reflectively-called constructor), plus WorkManager worker/InputMerger rules re-stated from the work-runtime AAR in case transitive consumer-rule propagation is incomplete through the Flutter plugin wrapper. - build.gradle.kts: re-enables isMinifyEnabled=true + isShrinkResources=true with proguard-android-optimize.txt + proguard-rules.pro. Verified on the real phone (BL9000): minified release APK launches without crash, MainActivity foreground, food-bank suggestions and slot chips render correctly. APK size 52.1 MB (vs 56.9 MB unminified). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SWPUBzE24Ls9i9GMRwXnnn
21 lines
1.1 KiB
Prolog
21 lines
1.1 KiB
Prolog
# Room: keep generated *_Impl classes and their no-arg constructors.
|
|
# The Room AAR ships "-keep class * extends RoomDatabase" but that only
|
|
# protects the class from removal/renaming — R8 still strips the no-arg
|
|
# constructor because it's only ever called via Class.getDeclaredConstructors()
|
|
# (reflection inside RoomDatabase.create()), which R8 cannot trace statically.
|
|
-keep class * extends androidx.room.RoomDatabase { <init>(); }
|
|
-dontwarn androidx.room.paging.**
|
|
-dontwarn androidx.lifecycle.LiveData
|
|
|
|
# WorkManager: keep worker classes, their two-arg constructors, and the
|
|
# WorkerParameters type passed to them. Sourced from work-runtime AAR's
|
|
# own proguard.txt — re-stated here so they apply even if transitive
|
|
# consumer-rule propagation through the Flutter plugin wrapper is incomplete.
|
|
-keepnames class * extends androidx.work.ListenableWorker
|
|
-keepclassmembers public class * extends androidx.work.ListenableWorker {
|
|
public <init>(...);
|
|
}
|
|
-keep class androidx.work.WorkerParameters
|
|
-keepnames class * extends androidx.work.InputMerger
|
|
-keepclassmembers class * extends androidx.work.InputMerger { void <init>(); }
|