feat(proguard): IMPL_07 - Add missing Widget & Compose ProGuard rules
- Add Widget ActionCallback rules to prevent R8 removal (fixes potential widget crashes) - Add Glance state preservation rules for widget preferences - Add Compose TextLayout rules to prevent gradient regression in release builds - Bump version to 1.8.1 (versionCode 21, versionName "1.8.1") Fixes: - Widget actions (ToggleChecklistItemAction, etc.) could be stripped by R8 - Glance widget state (DataStore-based) needs reflection protection - Compose onTextLayout callbacks could be optimized away causing gradient issues Files changed: - android/app/proguard-rules.pro: Added v1.8.1 rules section (+17 lines) - android/app/build.gradle.kts: Version bump 1.8.0 → 1.8.1
This commit is contained in:
@@ -20,8 +20,8 @@ android {
|
||||
applicationId = "dev.dettmer.simplenotes"
|
||||
minSdk = 24
|
||||
targetSdk = 36
|
||||
versionCode = 20 // 🎉 v1.8.0: Widgets, Sorting, UI Polish, Post-Update Changelog
|
||||
versionName = "1.8.0" // 🎉 v1.8.0: Major Feature Release
|
||||
versionCode = 21 // 🐛 v1.8.1: Checklist Fixes, Widget Sorting, ProGuard Audit
|
||||
versionName = "1.8.1" // 🐛 v1.8.1: Bugfix & Polish Release
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
20
android/app/proguard-rules.pro
vendored
20
android/app/proguard-rules.pro
vendored
@@ -82,3 +82,23 @@
|
||||
# v1.7.1: Suppress TextInclusionStrategy warnings on older Android versions
|
||||
# This class only exists on API 35+ but Compose handles the fallback gracefully
|
||||
-dontwarn android.text.Layout$TextInclusionStrategy
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════
|
||||
# v1.8.1: Widget & Compose Fixes
|
||||
# ═══════════════════════════════════════════════════════════════════════
|
||||
|
||||
# Glance Widget ActionCallbacks (instanziiert via Reflection durch actionRunCallback<T>())
|
||||
# Ohne diese Rule findet R8 die Klassen nicht zur Laufzeit → Widget-Crash
|
||||
-keep class dev.dettmer.simplenotes.widget.*Action { *; }
|
||||
-keep class dev.dettmer.simplenotes.widget.*Receiver { *; }
|
||||
|
||||
# Glance Widget State (Preferences-basiert, intern via Reflection)
|
||||
-keep class androidx.glance.appwidget.state.** { *; }
|
||||
-keep class androidx.datastore.preferences.** { *; }
|
||||
|
||||
# Compose Text Layout: Verhindert dass R8 onTextLayout-Callbacks
|
||||
# als Side-Effect-Free optimiert (behebt Gradient-Regression)
|
||||
-keepclassmembers class androidx.compose.foundation.text.** {
|
||||
<methods>;
|
||||
}
|
||||
-keep class androidx.compose.ui.text.TextLayoutResult { *; }
|
||||
|
||||
Reference in New Issue
Block a user