不幸的是,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。你应该有这样的东西:在四处询问后,我能够通过删除我调用可绘制文件的实例来解决问题。 这主要分别在我的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 错误而停止工作的主要内容,如果未能解决你的问题,请参考以下文章