Flutter Awesome Notifications发布模式异常,Debug模式正常
解决Release模式下AwesomeNotifications初始化报错的方案
问题根源
这个报错是Release模式代码混淆搞的鬼——Awesome Notifications依赖SharedPreferences存储配置,但混淆把SharedPreferences相关的类名改乱了,导致找不到正确的参数化类,Debug模式默认不混淆所以运行正常。
具体修复步骤
- 添加混淆保护规则:打开Android项目中的
android/app/proguard-rules.pro文件,加入以下规则,防止核心类被混淆:# 保护SharedPreferences相关类不被混淆 -keep class android.content.SharedPreferences { *; } -keep class android.content.SharedPreferences$** { *; } # 保护Awesome Notifications的核心类 -keep class me.carda.awesome_notifications.** { *; } -keep class me.carda.awesome_notifications_core.** { *; } - 确认混淆配置开启:检查
android/app/build.gradle的release配置块,确保混淆和资源压缩处于开启状态,并且指定了上述规则文件:buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - 清理缓存后重构建:执行以下命令清理缓存,再重新打包Release版本:
flutter clean flutter build apk --release
额外检查项
- 确保调用
AwesomeNotifications().initialize()之前,SharedPreferences已经完成初始化,可提前执行await SharedPreferences.getInstance()。 - 如果项目中还有其他依赖SharedPreferences的插件,需确认它们的混淆规则没有冲突。
内容的提问来源于stack exchange,提问作者Sohatzky
相关产品推荐
相关产品推荐

