不幸的是,Flutter App 因无法启动活动 ComponentInfo 错误而停止工作

Posted

技术标签:

【中文标题】不幸的是,Flutter App 因无法启动活动 ComponentInfo 错误而停止工作【英文标题】:Flutter App unfortunately stops working with Unable to start activity ComponentInfo error 【发布时间】:2021-03-07 10:57:42 【问题描述】:

我创建了一个在实体手机上运行良好的颤振应用程序,但是当我在模拟器上尝试时,应用程序不幸停止了。产生错误java.lang.RuntimeException: Unable to start activity ComponentInfobig.xxxx.xxxxx/xxx.xxxxx.xxxxx.MainActivity: android.content.res.Resources$NotFoundException: File res/drawable/launch_background.xml from drawable resource ID #0x7f040019

我已经检查过了,launch_background.xml 是存在的。这是内容

<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="?android:colorBackground" />

    <!-- You can insert your own image assets here -->
    <!-- <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/launch_image" />
    </item> -->
</layer-list>

【问题讨论】:

确保你的android项目中存在launch_background.xml 我已经检查过并且 launch_background.xml 存在。我已经用 xml 文件的内容编辑了我的问题 【参考方案1】:

看起来您已经删除了您的 launch_background.xml,这是您使用 Flutter 时在 Android 中执行的第一个屏幕。如果您有launch_background.xml,请检查路径/android/app/src/main/drawable。 如果不这样做,则必须在项目中添加。

【讨论】:

我已经检查过并且 launch_background.xml 存在。还是我应该删除并重新添加? 你应该检查你的 AndroidManifest.xml 是否使用了launch_background。你应该有这样的东西: 如果你在 3.AndroidManifest 中有 3 个检查。 【参考方案2】:

在四处询问后,我能够通过删除我调用可绘制文件的实例来解决问题。 这主要分别在我的styles.xml文件和Manifest.xml文件中。

<item name="android:windowBackground">@drawable/launch_background</item>

<meta-data  android:name="io.flutter.embedding.android.SplashScreenDrawable"        android:resource="@drawable/launch_background" />

有机会问另一个以不同方式解决此问题的人,这就是他不得不说的。

根本原因

根本原因似乎是期望一个位图但它没有得到一个。尽管@mipmap/ic_launcher 指向一些PNG(参见例如res/mipmap-hdpi),但在API >= 26 上,它会指向Android 似乎不太喜欢的XML。

所以在我的例子中,引用@drawable(它总是一个PNG ==一个漂亮的位图)而不是@mipmap(它可能是一个自适应图标==一个奇怪的位图?如果是位图?)修好了。

换句话说:不要使用 an 作为 android:src 。

如果我今天要这样做,我会尝试矢量可绘制对象(只需在 Android Studio 中导入 SVG 以获取矢量 XML)也能正常工作(而不是必须使用 PNG)。

希望能有所帮助(或至少解释我的这种变化)。

请仔细检查您是否有同样的问题 - Resources$NotFoundException 可能由于许多不同的原因而被抛出,例如资源位于 drawable-v26 文件夹中,因此在运行时被忽略,例如API 24。有时 gradle 构建日志会显示一些警告,指出 XML 无法编译(但构建仍然成功,然后在运行时出现问题)。

如果不是同一个问题,最好在 Internet 上搜索其他原因并修复 Resources$NotFoundException。

【讨论】:

【参考方案3】:

只需在 android\app\src\main\AndroidManifest.xml 中将其注释掉

<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"/>

【讨论】:

正是 Answer by Sefu Zephaniah 所说的。只有他们还添加了解释。

以上是关于不幸的是,Flutter App 因无法启动活动 ComponentInfo 错误而停止工作的主要内容,如果未能解决你的问题,请参考以下文章

不幸的是,*app* 已停止 [重复]

Flutter:动态链接未启动应用程序

Xcode 上的 Flutter 应用程序升级后无法启动

Android Studio Release build 给了我:不幸的是,“App Name”已经停止

Flutter - 本地化启动列表中App名字

启动键盘时 Flutter App 冻结