release: cut 0.3.1 — fix the launch crash in minified builds
R8 kept androidx.work.impl.WorkDatabase_Impl but pruned its no-arg constructor: nothing calls it directly, Room only reaches it reflectively. Room then threw InstantiationException, surfacing as "Failed to create an instance of androidx.work.impl.WorkDatabase". WorkManager builds that database from a startup ContentProvider, so 0.3.0 died before any of our code ran — every install, every launch. We don't depend on WorkManager directly; it arrives via Glance. AGP 9's stricter R8 is what tipped this over, which is why 0.3.0 was the first release to hit it. Keep the Room no-arg constructor, and the ListenableWorker constructor alongside it — same pruning hazard on the path WorkManager uses to instantiate workers by name, which would have bitten once a Glance widget update actually ran. Reproduced the reporter's stack trace frame-for-frame on a releaseTest build, then confirmed it launches clean afterwards. Fixes #1. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,13 @@ All notable changes to this project are documented here. The format follows
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.3.1] - 2026-07-20
|
||||
|
||||
### Fixed
|
||||
- Agendula no longer crashes on launch. Every 0.3.0 install was affected: the
|
||||
release build stripped a constructor that the background-work scheduler needs
|
||||
to open its database, and that happens before the app draws anything.
|
||||
|
||||
## [0.3.0] - 2026-07-19
|
||||
|
||||
### Added
|
||||
|
||||
@@ -29,8 +29,8 @@ android {
|
||||
// release itself (versionCode is pinned to MAJOR*10000 + MINOR*100 +
|
||||
// PATCH from versionName, e.g. 0.2.0 -> 200). The Gitea release is marked
|
||||
// as a pre-release while MAJOR is 0. See docs/RELEASING.md.
|
||||
versionCode = 300
|
||||
versionName = "0.3.0"
|
||||
versionCode = 301
|
||||
versionName = "0.3.1"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
15
app/proguard-rules.pro
vendored
15
app/proguard-rules.pro
vendored
@@ -2,5 +2,20 @@
|
||||
-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);
|
||||
}
|
||||
|
||||
# Compose Compiler may keep its own; defaults are fine
|
||||
-dontwarn org.jetbrains.annotations.**
|
||||
|
||||
5
fastlane/metadata/android/en-US/changelogs/301.txt
Normal file
5
fastlane/metadata/android/en-US/changelogs/301.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
### Fixed
|
||||
- Agendula no longer crashes on launch. Every 0.3.0 install was affected: the
|
||||
release build stripped a constructor that the background-work scheduler needs
|
||||
to open its database, and that happens before the app draws anything.
|
||||
|
||||
Reference in New Issue
Block a user