SharedPreferences 未在发布版本中实例化

Aze*_*mil 9 android release-builds sharedpreferences flutter

在我的 flutter 应用程序中,我实现了一个入门视图。因为它应该只加载一次,所以我使用共享首选项来存储一个整数来表示已经显示了入职。当我在调试模式下运行应用程序时,一切正常。但是当我构建它的发布版本时,它不起作用。

而且我的应用程序还使用了 firebase 移动身份验证。我之所以提到这一点,是因为这也可能是一个原因。

编码:

case InitializeEvent:
        SharedPreferences prefs = await SharedPreferences.getInstance();
        int initScreen = prefs.getInt(SharedPrefUtil.INIT_SCREEN);
        await prefs.setInt(SharedPrefUtil.INIT_SCREEN, 1);
        if (initScreen == 1) {
          add(CheckAppConfigEvent());
        } else {
          yield state.clone(page: RootState.ONBOARDING_PAGE);
        }
        yield state.clone(loading: false);
        break;
Run Code Online (Sandbox Code Playgroud)

因此,在上面的代码中,如果我注释初始化共享首选项,读取和写入行并在 if else 语句中设置 true 或 false,则在发布版本中一切正常。这就是为什么我认为问题在于初始化共享首选项。

而且我只允许互联网。我是否缺少 AndroidManifest.xml 中的任何权限

<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

小智 10

以前的解决方案在我的情况下不起作用,然后我尝试禁用这两个然后它起作用了。

minifyEnabled false shrinkResources false


Dee*_*yal 7

我的应用程序也无法在发布版本中运行,问题是由于shared_preferences包造成的。

我在发布版本中收到以下错误:

MissingPluginException(在通道 plugins.flutter.io/shared_preferences 上找不到方法 getAll 的实现)

我尝试了几种解决方案:

  1. 切换颤振通道
  2. 尝试了几个版本的 shared_preferences
  3. 删除 .pub-cache 文件夹,如下所述https://github.com/flutter/flutter/issues/38873#issuecomment-680788165

但没有任何效果。

该应用程序在调试版本中运行良好,但在发布版本中却没有。

然后我试过了

flutter build apk --no-shrink

flutter build appbundle --no-shrink

并且该应用程序在发布版本中也运行良好。但问题是在不缩小代码的情况下解决的。所以这需要修复。

希望 Flutter 团队能够调查并解决这个问题。

编辑:
已经向 Flutter 团队报告了这个问题。
https://github.com/flutter/flutter/issues/65334