apk 发布模式下 shared_prefrences 的颤振错误(在通道 plugins.flutter.io/shared_preferences 上找不到方法 getAll 的实现)

Posted

技术标签:

【中文标题】apk 发布模式下 shared_prefrences 的颤振错误(在通道 plugins.flutter.io/shared_preferences 上找不到方法 getAll 的实现)【英文标题】:Flutter error of shared_prefrences in release mode of apk (No implementation found for method getAll on channel plugins.flutter.io/shared_preferences) 【发布时间】:2021-04-23 18:11:36 【问题描述】:

shared_preferences:^0.5.12+4

错误日志: MissingException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)

flutter sdk 详细信息:

[✓] Flutter (Channel stable, 1.22.5, on Mac OS X 10.14.6 18G7016 darwin-x64, locale en-US) • Flutter 版本 1.22.5,位于 /Users/taleb/Developer/flutter • 框架修订7891006299(6周前),2020-12-10 11:54:40 -0800 • 引擎修订版ae90085a84 • Dart 版本 2.10.4

[✓] android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.3) • Android SDK 位于 /Users/taleb/Library/Android/sdk • 平台 android-30,构建工具 30.0.3 • ANDROID_HOME = /Users/taleb/Library/Android/sdk • Java 二进制文件位于:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_242-release-1644-b3-6915495) • 接受所有 Android 许可证。

[!] Xcode - 为 ios 和 macOS 开发 ✗ Xcode 安装不完整; iOS 开发需要完整安装。 下载地址:https://developer.apple.com/xcode/download/ 或者通过 App Store 安装 Xcode。 安装后,运行: sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -runFirstLaunch • CocoaPods 1.8.3 版

[✓] Android Studio(4.1 版) • Android Studio 位于 /Applications/Android Studio.app/Contents • 安装了 Flutter 插件 • Dart 插件版本 201.9317 • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA 终极版(2019.3 版) • IntelliJ 位于 /Applications/IntelliJ IDEA.app • Flutter 插件版本 45.1.2 • Dart 插件版本 193.7547

[✓] 已连接设备(1 个可用) • SM A107F(移动) • R9AM905ZREJ • android-arm • Android 10 (API 29)

!医生发现了 1 个类别的问题。

【问题讨论】:

共享首选项是经常更新的软件包之一,它们通常没有向后兼容性。我选择使用修复版本。现在我正在使用0.5.7+3,它在任何模式下都可以正常工作。检查此解决方案,它可能会对您有所帮助。 @mahdishahbazi 感谢您的帮助,我也测试了 0.5.7+3 版本的发布模式,但我仍然对 prefrs 有问题:( 你遇到了什么错误? @mahdishahbazi 在发布模式下我看不到日志,我只是测试了删除偏好设置,我看到一切正常,当我添加偏好设置时我遇到了问题!!!例如,在应用程序的“splashPage”中,我正在检查用户是否使用 prefrs 登录,我仍然留在“splashPage”中并且没有发生任何事情...... @Taleb 尝试使用FlutterError.onErrorErrorWidget.builder 在屏幕上显示您的错误或登录日志文件。 【参考方案1】:

如果您使用 shared_preferences 0.2.4 及更高版本,请使用setMockInitialValues

SharedPreferences.setMockInitialValues(); // set initial values here if desired

对于早期版本,您可以手动完成:

const MethodChannel('plugins.flutter.io/shared_preferences')
  .setMockMethodCallHandler((MethodCall methodCall) async 
    if (methodCall.method == 'getAll') 
      return <String, dynamic>; // set initial values here if desired
    
    return null;
  );

【讨论】:

以上是关于apk 发布模式下 shared_prefrences 的颤振错误(在通道 plugins.flutter.io/shared_preferences 上找不到方法 getAll 的实现)的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图在发布apk中显示空白屏幕,在调试模式下工作正常

Firebase 电话身份验证在 APK 发布模式下不起作用

发布 apk 安装但启动时崩溃。该应用程序在调试模式下完美运行。我查看了 Android Studio,这是我的 adb logcat。

我的颤振应用程序没有从 release.apk 中的 api 获取数据,但在调试模式下工作

在 Debug 模式下工作正常 vs Build APK 不工作,Flutter

无法在 Google Play 中更新应用(apk 在调试模式下签名)。可能是密钥库问题