You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API 34 Release模式下Awesome Notifications初始化报错求助

解决Flutter Awesome Notifications在API34 Release模式下的初始化报错问题

问题根因

报错信息里的SHARED_PREFERENCES_NOT_AVAILABLE, class p2.b isn't parameterized,本质是Release模式开启代码混淆(minifyEnabled true)后,ProGuard将Awesome Notifications依赖的SharedPreferences相关泛型类重命名并移除了参数化信息,导致初始化时无法正确调用sharedPreferences.get方法。Debug模式未开启混淆,所以运行正常。

解决方案

在项目的android/app/proguard-rules.pro文件中添加以下混淆规则,保护相关类不被混淆:

# 保护Awesome Notifications全量类与接口
-keep class me.carda.awesome_notifications.** { *; }
-keep interface me.carda.awesome_notifications.** { *; }

# 保留SharedPreferences相关泛型类的参数化信息
-keepclassmembers class ** {
    @androidx.preference.PreferenceManager *;
    @android.content.SharedPreferences *;
}

# 强制保留泛型签名与内部类,防止ProGuard移除关键信息
-keepattributes Signature, InnerClasses

如果项目依赖shared_preferences插件,补充添加该插件的混淆规则:

# 保护SharedPreferences插件类
-keep class io.flutter.plugins.sharedpreferences.** { *; }

验证步骤

  1. 确认build.gradle的Release配置已正确引入自定义混淆文件:
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        // 其他原有配置
    }
    
  2. 清理缓存并重新构建Release版本:
    flutter clean
    flutter build apk --release
    

内容的提问来源于stack exchange,提问作者Rian Pratama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:25:00