我有一个flatter(3.0.4)应用程序,我在安卓12(真实设备和模拟器)上运行测试.

主要的Flutter 相关性为shared_preferences 2.0.15、Flatter_riverpod 1.0.4、intl 0.17.0、i18n_extension 5.0.0和syncfusion_Flatter\u图表20.1.58.

Gradle版本似乎是7.1.0(note: also listed as 4.0.0 for android/build.gradle -> buildscript -> ext -> gradleVersion, so not sure about that).

在调试模式(flutter run)下运行时没有问题.

但是,当在发布模式(flutter run --release)下运行,并使用带有SyncFusion的图表切换到特定的应用程序页面时,我会在应用程序页面上直接显示以下错误:

Error: Platform Exception(error, Serializer for class 'h' is not found

注意,我的代码中没有类"h".

根据一些建议herehere,我一直在try 以下内容:

  • 在android/app/build中添加lintOptions.渐变->android{}
  • 将Gradle降级到3.6(正如你所猜测的那样,不喜欢这个解决方案,但无论如何都try 了)
  • 将decorator @Keep和/或@Serializable添加到代码中唯一的Kotlin类中(我有一个自定义Kotlin类).

这些解决方案都不起作用.

我的印象是,在释放模式下构建时,错误来自SyncFusionFlutter 模块,因为错误仅出现在使用SyncFusions的页面上,而不是任何其他页面上.

知道发生了什么吗?

推荐答案

它很可能是由proguard and minifyEnabled引起的.它可能会混淆/优化一些不应该混淆/优化的代码.

在我的例子中,我在我的flatter应用程序中使用了一个定制的aar安卓库.图书馆+数据模型的公共界面也受到了影响.

为了解决这个问题,我在我的Flitter应用程序的build.gradle中添加了:

buildTypes {
        release {
            signingConfig signingConfigs.release
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
            'proguard-rules.pro' # and this line
        }
}

然后我在与build.gradle相同的目录中创建了一个文件proguard-rules.pro:

-keep class com.android.library.dataModels.** { *; }
-keep class com.android.library.publicInterface.** { *; }

我还在我的aar中添加了同样的东西,都是required.

你也可以完全删除minifyEnabled(minifyEnabled false)和proguard.这应该强调这个问题.

Flutter相关问答推荐

当第二页在单独的小工具中使用Navigator.pop时,Navigator.push不起作用

如何防止alert 对话框在收到通知时出现在某个flutter页面中

Flutter 图标记移动

如果我使用搜索栏,如何在嵌套滚动视图中停止自动滚动?

如何使用providerContainer监听/写入FutureProvider?

如何从flutter中不同类别的列表中获取所有产品

没有为类型 'Widget' 定义运算符 '[]' .try 定义运算符[]

Flutter如何从深入嵌套的小部件中打开抽屉?

允许文本小部件在容器之间溢出

是否可以在 flutter 应用程序中使用 jetpack compose?

Flutter:如何在 bottomsheet 中创建一个日期 Select 器,如下图所示

有没有办法在没有收缩包装的情况下在列中使用 ListView.Builder?

如何制作flutter showDialog、AlertDialog屏障 colored颜色 渐变

如何使用 riverpod_annotation 创建非自动处置提供程序?

Flutter Serverpod 在示例项目上返回 400 错误

Flutter 如何使用 ClipPath 编辑容器的顶部?

Flutter Web App 未启动:脚本的 MIME 类型不受支持

Flutter 用户过滤器

根据索引/变量更改小部件的 colored颜色

未处理的异常:FileSystemException:无法打开文件,路径 = 'assets/res.zip'(操作系统错误:没有这样的文件或目录,errno = 2)