启动画面仅在Android 8.1上触发Resources $ NotFoundException

时间:2018-09-27 00:37:46

标签: android android-resources android-theme

我一步一步地遵循了this tutorial,它在我的API 21仿真器上可以正常工作,但是在我的27上,应用程序加载后立即崩溃:

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com.myapp.myapp / com.myapp.myapp.ui.SplashScreenActivity}:android.content.res.Resources $ NotFoundException:Drawable com.myapp.myapp:drawable / splash_screen_background,资源ID为#0x7f0700a9

我的文件drawable / splash_screen_background是这个文件:

Direct iteration
[1, 2]
[2, 1]
Listing
[1, 2]
[1, 2]

我尝试使用<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:type="radial" android:gradientRadius="100%p" android:startColor="@color/primaryColor" android:endColor="@color/primaryDarkColor"/> </shape> </item> <item> <bitmap android:gravity="center" android:src="@drawable/ic_home_white_24dp"/> </item> </layer-list> ,将可绘制对象直接传递到app:srcCompat,从而消除了item,但问题仍然存在。我见过有人说改用bitmap,但是他们说这在

This answer显示了一些非常复杂的额外配置,包括android:drawable=选项,我不确定这将如何影响我的应用程序,是否会改变矢量图形的性能?

在Android上处理可以在多个API上使用的gradle的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

就像您在评论中建议的那样,该问题的解决方案是,您的资源不在可绘制的文件夹中。

所有可绘制资源文件也应位于“可绘制”中。如果您具有较高Android版本的特殊功能,则可以将文件上传到“ drawable-v21”,“ drawable-v24”,...

我希望这会有所帮助,我遇到了同样的问题,并将来自不同drawable文件夹的所有资源放入全局drawable文件夹后,我的问题得到了解决。