flutter Android 应用程序在发布模式下冻结在启动屏幕上

问题描述 投票:0回答:8

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

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

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

我使用了 get_storage 、shared_preferences 和 secure_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

android flutter gradle
8个回答
13
投票

我有一个类似的错误:

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

我通过将

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>


5
投票

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

花了几天时间试图解决这个问题,最终我将 Flutter 降级到 2.8 并发布了更新,问题就消失了。


2
投票

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

另外,尝试将

flutter_native_splash: ^2.0.4
dev_dependencies
移动到
dependencies


1
投票

拿起您的真实设备并通过电缆将其连接到您的电脑并安装您的应用程序的发行版本

  1. 转到终端并运行

    flutter logs
    以查看发生了什么

  2. 在某些情况下,可能是权限就是原因。您需要指定它们

    (don't relax because of default permissions set)


0
投票

我认为应该有两件事——

首先确保您在 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 教程的视频。

谢谢你。


0
投票

由于其他答案没有带来任何运气,我建议您首先禁用应用程序中的所有内容,然后逐渐启用应用程序的部分内容,直到重现问题。例如,首先将

MyApp()
中的
main()
替换为应用程序的空白外壳:

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

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


0
投票

建议您从头开始重新安装flutter sdk并尝试一下。


0
投票

奇怪的是,电话连接线的注释对我有帮助。 我近一个月来一直试图弄清楚到底发生了什么,但毫无结果。尽管电缆按其应有的方式工作,从设备传输信息并充电,但它是未随其安装的应用程序的构建。尝试简单地更换设备的插入电缆。

© www.soinside.com 2019 - 2024. All rights reserved.