android.content.res.Resources$NotFoundException: 文件 res/drawable-v21/launch_background.xml 未找到。

11

之前我一直在构建和运行Flutter应用程序,一切都很好。我不记得做过任何更改,但最近,在通过Android Studio在智能手机上构建和运行应用程序时遇到了以下错误:

Launching lib\main.dart on SM N900 in debug mode...
Running Gradle task 'assembleDebug'...
E/AndroidRuntime(12731): FATAL EXCEPTION: main
E/AndroidRuntime(12731): Process: io.flutter.demo.gallery, PID: 12731
E/AndroidRuntime(12731): java.lang.RuntimeException: Unable to start activity ComponentInfo{io.flutter.demo.gallery/io.flutter.demo.gallery.MainActivity}: android.content.res.Resources$NotFoundException: File res/drawable-v21/launch_background.xml from drawable resource ID #0x7f040000
E/AndroidRuntime(12731):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693)
E/AndroidRuntime(12731):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)
E/AndroidRuntime(12731):    at android.app.ActivityThread.access$900(ActivityThread.java:177)
E/AndroidRuntime(12731):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
E/AndroidRuntime(12731):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(12731):    at android.os.Looper.loop(Looper.java:145)
E/AndroidRuntime(12731):    at android.app.ActivityThread.main(ActivityThread.java:5942)
E/AndroidRuntime(12731):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(12731):    at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(12731):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
E/AndroidRuntime(12731):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
E/AndroidRuntime(12731): Caused by: android.content.res.Resources$NotFoundException: File res/drawable-v21/launch_background.xml from drawable resource ID #0x7f040000
E/AndroidRuntime(12731):    at android.content.res.Resources.loadDrawableForCookie(Resources.java:3752)
E/AndroidRuntime(12731):    at android.content.res.Resources.loadDrawable(Resources.java:3620)
E/AndroidRuntime(12731):    at android.content.res.Resources.getDrawable(Resources.java:1852)
E/AndroidRuntime(12731):    at android.content.res.Resources.getDrawable(Resources.java:1818)
E/AndroidRuntime(12731):    at io.flutter.embedding.android.FlutterActivity.getSplashScreenFromManifest(FlutterActivity.java:495)
E/AndroidRuntime(12731):    at io.flutter.embedding.android.FlutterActivity.provideSplashScreen(FlutterActivity.java:469)
E/AndroidRuntime(12731):    at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onCreateView(FlutterActivityAndFragmentDelegate.java:301)
E/AndroidRuntime(12731):    at io.flutter.embedding.android.FlutterActivity.createFlutterView(FlutterActivity.java:520)
E/AndroidRuntime(12731):    at io.flutter.embedding.android.FlutterActivity.onCreate(FlutterActivity.java:414)
E/AndroidRuntime(12731):    at android.app.Activity.performCreate(Activity.java:6283)
E/AndroidRuntime(12731):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
E/AndroidRuntime(12731):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
E/AndroidRuntime(12731):    ... 10 more
E/AndroidRuntime(12731): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #4: <item> tag requires a 'drawable' attribute or child tag defining a drawable
E/AndroidRuntime(12731):    at android.graphics.drawable.LayerDrawable.inflateLayers(LayerDrawable.java:202)
E/AndroidRuntime(12731):    at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:147)
E/AndroidRuntime(12731):    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1150)
E/AndroidRuntime(12731):    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1063)
E/AndroidRuntime(12731):    at android.content.res.Resources.loadDrawableForCookie(Resources.java:3736)
E/AndroidRuntime(12731):    ... 21 more

Flutter医生 flutter doctor -v的输出如下:

>flutter doctor -v
[√] Flutter (Channel master, 1.24.0-8.0.pre.1, on Microsoft Windows [Version 10.0.19041.264], locale en-US)
    • Flutter version 1.24.0-8.0.pre.1 at C:\Users\m3\repos\flutter
    • Framework revision e444b1e3fa (5 weeks ago), 2020-10-30 00:41:52 -0400
    • Engine revision 99cc50dfff
    • Dart version 2.11.0 (build 2.11.0-266.0.dev)

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at C:\Users\m3\AppData\Local\Android\sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 4.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 50.0.1
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] Connected device (3 available)
    • SM N900 (mobile) • 4d00b6ae472d80eb • android-arm    • Android 5.0 (API 21)
    • Web Server (web) • web-server       • web-javascript • Flutter Tools
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 87.0.4280.66

• No issues found!


我只是简单地Git checkout主分支。打开Android Studio。通过USB端口将Android智能手机设备连接到计算机。点击绿色三角形按钮(Android Studio)以在安装有Android 5.0的设备上构建和运行应用程序。终端上会抛出错误。我使用的是Windows 10。
注意:这样的帖子显示可能需要配置Gradle构建系统,但不确定如何配置。

https://dev59.com/f-k6XIcBkEYKwwoYAfO1#39419701

更新

使用Android Studio的文件 > 清除缓存 / 重启...未能解决问题。

更新

在Android 9(API 28)上构建和运行应用程序,异常已解决,应用程序正常运行:

$ flutter doctor -v
[√] Flutter (Channel master, 1.26.0-2.0.pre.401, on Microsoft Windows [Version 10.0.19041.264], locale en-US)
    • Flutter version 1.26.0-2.0.pre.401 at C:\Users\m3\repos\flutter
    • Framework revision da5a454d5c (11 hours ago), 2021-01-17 01:24:03 -0500
    • Engine revision 609036f2bf
    • Dart version 2.12.0 (build 2.12.0-236.0.dev)

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at C:\Users\m3\AppData\Local\Android\sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 4.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 50.0.1
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] Connected device (2 available)
    • SM A105F (mobile) • RF8M60PVD5F • android-arm    • Android 9 (API 28)
    • Chrome (web)      • chrome      • web-javascript • Google Chrome 87.0.4280.88

• No issues found!

更新

目前的暗示是该应用程序在Android 9(API 28)上运行良好,但在Android 5.0(API 21)上会引发上述异常。有人知道可能的问题原因吗?我如何在Android 5.0(API 21)上运行该应用程序?

更新

这与问题相关:

https://github.com/flutter/gallery/issues/383

更新

此外,这也是相关的:

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


1
Caused by: android.content.res.Resources$NotFoundException: File res/drawable-v21/launch_background.xml - ygngy
4个回答

9
在文件 android\app\src\main\res\drawable-v21\launch_background.xml 中,异常可以通过替换解决。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="?android:colorBackground" />

by

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />

8
在文件android/app/src/main/AndroidManifest.xml中,通过将以下内容注释掉来解决异常:
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" />

移除上述代码可以解决异常问题,但我不确定它是否会产生任何副作用。


1
它是有效的,但如果您在launch_background.xml中设置了启动图像,则会移除该图像。那么我们如何修复它并保持启动图像显示? - Zenko
@Zenko 这个问题应该已经通过这个PR被修复了!=) - user3405291
首先,该PR在主通道上。因此我尝试了主通道和稳定通道两种方式。都更新到了最新版本。并且尝试了注释掉那部分代码和不注释的情况。行为是相同的。如果我们不注释掉它,它会崩溃;如果我们注释掉它,启动屏幕就不会显示。 - Zenko

2

在我的情况下,解决了这个问题的方法是从以下位置复制文件launch_background.xml。该文件指定了我的项目的启动图像和背景颜色:

project\android\app\src\main\res\drawable

into:

project\android\app\src\main\res\drawable-v21

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接