【问题标题】:flutter android app freezes on the splash screen in release modeflutter android 应用程序在发布模式下冻结在初始屏幕上
【发布时间】:2022-12-22 20:10:43
【问题描述】:

我在使用存储来保存用户登录数据时遇到问题。

这样的场景:登录后,我清除应用程序并尝试再次重新打开它,有时它会打开,有时它会在启动画面上冻结。 这只发生在发布模式。

我试图删除每个包,直到我发现登录后使用存储有问题。所以如果我不登录,什么都不会冻结。

我使用了 get_storage 和 shared_preferences 以及 secured_storage 包,但没有任何改变。 颤振 2.10.2。

在真实设备上测试

这也是用过的包

module:
  androidX: true # Add this line.

environment:
  sdk: ">=2.11.0 <3.0.0"

dependencies:
  dio: ^4.0.0
  get: ^4.1.4
  get_storage:
  flutter:
    sdk: flutter


dev_dependencies:
  flutter_launcher_icons: ^0.9.2

flutter_icons:
  android: true
  ios: false
  image_path: "assets/icons/launcher_icon.png"
  flutter_test:
    sdk: flutter

name: delivery
description: manager App
version: 1.6.3
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

最后我决定分享冗长的希望有人可以提供帮助

https://github.com/flutter/flutter/issues/98862

【问题讨论】:

  • 这仅在模拟器上冻结吗?您是否也在真实设备上对此进行了测试?
  • 使用发布模式时它在真实设备上冻结,但在调试模式下没问题
  • 您可以尝试 1) 删除组件直到它工作......或 2) 打印每个步骤的调试信息,以便您知道它卡在哪里。这不会解决问题,但会告诉您问题出在哪里。
  • 大约 1 ,在登录并清除所有应用程序然后运行应用程序后发生卡住,这意味着登录存储发生了一些问题,但我无法删除大约 2 的存储,logcat 或运行中没有显示或任何异常
  • 不应该flutter_native_splashdependencies:块而不是dev_dependencies:

标签: android flutter gradle


【解决方案1】:

几天前我在我们的生产应用程序中遇到了同样的问题。我用 Flutter 2.10.2 发布了一个更新(本地应用程序数据库中只更新了几个表),许多用户开始冻结启动屏幕。

在花了几天时间解决之后,我终于将 Flutter 降级到 2.8 并发布了更新,问题就消失了。

【讨论】:

  • 谢谢@Mohammad Tanvir Parvez,经过几天对所有解决方案的大约 100 次尝试,您的建议是唯一对我有用的建议。
【解决方案2】:

我有一个类似的错误:

  • 默认情况下,在 Android 上,android:allowBackup 设置为 true,这意味着您的应用程序的数据会自动备份到您的 Google Drive
  • 问题是当您的数据结构中的某些内容发生变化但您有一个包含旧的且不兼容的数据结构的旧备份时。当重新安装与备份的旧数据结构不兼容的新版本应用程序时,它将冻结在本机启动画面上。

我通过将 android:allowBackup="false" 添加到 android/app/src/main/AndroidManifest.xml 解决了这个问题:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    <application
        ...
        android:allowBackup="false"
        ...
    </application>
</manifest>

【讨论】:

    【解决方案3】:

    您可以在应用程序中安装 sentry_flutter 以捕获发布应用程序中的异常。

    另外,尝试将 flutter_native_splash: ^2.0.4dev_dependencies 移动到 dependencies

    【讨论】:

    • 我已经在使用它,但它没有发现任何错误,因为实际上没有异常,只是应用程序停止在初始屏幕上并显示此消息 {应用程序未响应}
    • @user1080247 我在我的回答中添加了另一个建议。
    • 我在尝试解决此问题时已经将其删除,但它仍然存在
    【解决方案4】:

    带上你的真实设备并通过电缆将它连接到你的电脑并安装你应用程序的发布版本

    1. 转到终端并运行flutter logs以查看发生了什么

    2. 在某些情况下,可能是权限原因。您需要指定它们(don't relax because of default permissions set)

    【讨论】:

    • 我在应用程序运行后使用此命令 flutter run --release 在停止执行之前无法运行任何其他命令,因此无法使用 flutter logs 或任何命令
    • 当 flutter build 完成后,将应用程序安装到您的手机上。然后将它连接到您的机器并打开新的会话/终端/命令提示符实例,然后运行flutter logs。然后从您安装了应用程序的设备启动您的应用程序。您将在终端中看到日志。 (确保在开发者选项中启用 usb 调试)
    • 什么都没有,日志中没有错误
    【解决方案5】:

    我认为应该有两件事——

    首先确保您在 AndroidManifest.xml 文件中添加了 Internet 权限和其他所需权限

    其次,如果您已经定义了所有必需的权限,那么试试这个——

    在你的 app/build.gradle 文件中添加这 3 行

            minifyEnabled false
            useProguard false
            shrinkResources false
    

    buildTypes {
            release {
                // TODO: Add your own signing config for the release build.
                // Signing with the debug keys for now, so `flutter run --release` works.
                signingConfig signingConfigs.debug
                minifyEnabled false
                useProguard false
                shrinkResources false
            }
        }
    

    然后清理你的项目并重试我希望这会起作用,如果你仍然遇到这个问题,请再次检查你使用的 flutter_native_splash 包的文档,同时观看文档中已经链接的 Johannes Milke 教程的视频。

    谢谢你。

    【讨论】:

    • 添加三行后我显示此错误 * 出了什么问题:评估项目“:app”时出现问题。 > 无方法签名:build_1icb3k0ev7h17j94toyq7e1sh.android() 适用于参数类型:(build_1icb3k0ev7h17j94toyq7e1sh$_run_closure3) 值:[build_1icb3k0ev7h17j94toyq7e1sh$_run_closure3@392a11c2]
    • 我还删除了 flutter_native_splash 并从头开始新项目,没有任何启动配置,但它仍然停在黑屏上,直到显示此消息 {app not responding }
    • 那么你必须尝试一个新项目并尝试添加任何东西来运行它,同样在此之前在终端中运行命令 flutter doctor -v
    • 我上面所说的,我从头开始新项目,但仍然挂在默认的黑色飞溅上,日志中没有任何问题
    • 您是在模拟器上还是在真实设备上运行您的应用程序?
    【解决方案6】:

    由于其他答案没有给出任何运气,我建议您首先禁用应用程序中的所有内容,然后逐渐启用应用程序的某些部分,直到您重现问题。例如,首先将 main() 中的 MyApp() 替换为应用程序的空白外壳:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
        statusBarColor: Colors.transparent, // transparent status bar
      ));
      await initServices();
      runApp(MaterialApp(
        home: Container(color: Colors.blue),
      ));
    }
    

    这将告诉您问题出在您的初始化还是应用程序的其余部分。如果加载蓝屏,则表示初始化正常。像这样继续划分您的应用程序,直到找到导致应用程序挂起的部分。

    【讨论】:

    • 该问题仅在登录后发生,我更新了答案以便更清楚
    【解决方案7】:

    推荐大家重新安装flutter sdk试试。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加更多详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写出好的答案的信息in the help center
    • 谢谢我更新了问题以澄清到底发生了什么@AbhishekDutt
    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 2021-05-10
    • 2017-02-13
    • 2021-02-11
    • 2020-08-05
    • 2017-05-28
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多