The minified release build crashed on every launch before any UI:
Unable to get provider androidx.startup.InitializationProvider:
Failed to create an instance of androidx.work.impl.WorkDatabase
The home-screen widgets use Glance, which pulls in WorkManager and its
transitive Room database (room-runtime 2.2.5). Room 2.2.5's bundled keep
rule is `-keep class * extends androidx.room.RoomDatabase` — it keeps the
class but not its constructor. Under R8 full mode (AGP 9) the generated
WorkDatabase_Impl was reduced to a non-instantiable class, so Room's
reflective newInstance() threw InstantiationException at startup.
Add `-keep class * extends androidx.room.RoomDatabase { *; }` so the
generated *_Impl classes keep their constructors. Verified against the
rebuilt release APK: WorkDatabase_Impl is now PUBLIC FINAL with its
<init> present.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
18 lines
890 B
Prolog
18 lines
890 B
Prolog
# Keep Hilt-generated classes
|
|
-keep class dagger.hilt.** { *; }
|
|
-keep @dagger.hilt.android.HiltAndroidApp class *
|
|
|
|
# Compose Compiler may keep its own; defaults are fine
|
|
-dontwarn org.jetbrains.annotations.**
|
|
|
|
# Room database implementations (pulled in transitively via
|
|
# androidx.glance:glance-appwidget → androidx.work → androidx.room).
|
|
# The widgets rely on Glance, whose WorkManager backend stores state in a Room
|
|
# database. Under R8 full mode (AGP 9 default) the generated *_Impl subclasses
|
|
# of RoomDatabase lose their usable no-arg constructor / are marked abstract,
|
|
# so Room's reflective instantiation throws InstantiationException and the app
|
|
# crashes at startup with "Failed to create an instance of ...WorkDatabase".
|
|
# Keep the generated Room database implementations fully intact.
|
|
-keep class * extends androidx.room.RoomDatabase { *; }
|
|
-dontwarn androidx.room.paging.**
|