Files
clockula/app/proguard-rules.pro
T
makiolaj a1337e7d9a fix(widgets): keep WorkManager's InputMerger constructor under R8
R8 under AGP 9 pruned the no-arg constructor of OverwritingInputMerger,
which WorkManager instantiates reflectively before running any worker.
Every Glance session worker then failed with "Could not create Input
Merger", no RemoteViews reached the host, and every widget showed
"Can't load widget" in minified builds. Debug builds were unaffected.
2026-10-02 22:15:05 +02:00

28 lines
1.4 KiB
Prolog

# Keep Hilt-generated classes
-keep class dagger.hilt.** { *; }
-keep @dagger.hilt.android.HiltAndroidApp class *
# Room instantiates its generated <Database>_Impl reflectively through a no-arg
# constructor. R8 under AGP 9 keeps the class but prunes that constructor, since
# nothing calls it directly — Room then throws InstantiationException, reported
# as "Failed to create an instance of ...". We pull Room in transitively via
# Glance -> WorkManager, whose WorkDatabase is built by WorkManagerInitializer
# at startup, so the app died on launch in every minified build (issue #1).
-keep class * extends androidx.room.RoomDatabase { <init>(); }
# WorkManager likewise looks its workers up by name and calls this constructor
# reflectively — same pruning, but it only bites once a worker actually runs
# (Glance's widget updates), so keep it explicitly rather than wait for it.
-keep class * extends androidx.work.ListenableWorker {
<init>(android.content.Context, androidx.work.WorkerParameters);
}
# Before a worker runs, WorkManager also instantiates its InputMerger by name
# through the no-arg constructor. With that pruned, every Glance session
# worker fails ("Could not create Input Merger"), no RemoteViews ever reach
# the host, and every widget shows "Can't load widget".
-keep class * extends androidx.work.InputMerger { <init>(); }
# Compose Compiler may keep its own; defaults are fine
-dontwarn org.jetbrains.annotations.**