对于 Vivo 设备上的几个 Drawable,Resources$NotFoundException

Posted

技术标签:

【中文标题】对于 Vivo 设备上的几个 Drawable,Resources$NotFoundException【英文标题】:Resources$NotFoundException for few Drawables on Vivo devices 【发布时间】:2019-09-11 11:13:35 【问题描述】:

我主要在 Vivo 设备上收到 Resources$NotFoundException。这只发生在可绘制资源上。我有从 mdpi 到 xxxhdpi 的所有变体。所有这些都是png。我无法复制它,只能在 4 个不同的地方进行生产。其中 2 个在初始屏幕中,1 个在 this line 上的 facebook 登录库中,用于 this drawable。这意味着这些用户无法进入应用程序。知道是否需要对这些设备进行一些特殊处理吗?我以前从未遇到过这样的事情。

示例代码

<androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/image_view"
        android:layout_
        android:layout_
        android:layout_marginBottom="0dp"
        android:adjustViewBounds="true"
        app:srcCompat="@drawable/splash"
        app:layout_constraintWidth_max="400dp"
        app:layout_constraintBottom_toTopOf="@+id/white_bg"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:src="@drawable/splash"/>

由于splash Drawable,我在这里遇到了这个崩溃。

堆栈跟踪

由 android.content.res.Resources$NotFoundException 导致无法 查找资源 ID #0x7f08013d com.myapp.ui.splashScreen.SplashScreenActivity.onCreate

由 android.content.res.Resources$NotFoundException 引起:无法 查找资源 ID #0x7f08013d 在 android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:292) 在 android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:879) 在 android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:749) 在 android.content.res.Resources.loadDrawable(Resources.java:922) 在 android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:953) 在 android.content.res.TypedArray.getDrawable(TypedArray.java:928) 在 android.widget.ImageView.(ImageView.java:188) 在 android.widget.ImageView.(ImageView.java:171) 在 androidx.appcompat.widget.AppCompatImageView.(AppCompatImageView.java:72) 在 androidx.appcompat.widget.AppCompatImageView.(AppCompatImageView.java:68) 在 androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:187) 在 androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:107) 在 androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266) 在 androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:817) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:775) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:908) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:869) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:521) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:429) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:380) 在 androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 在 androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:141) 在 com.myapp.ui.splashScreen.SplashScreenActivity.onCreate(SplashScreenActivity.java:81) 在 android.app.Activity.performCreate(Activity.java:7129) 在 android.app.Activity.performCreate(Activity.java:7120) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2906) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3031) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1732) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:192) 在 android.app.ActivityThread.main(ActivityThread.java:6792) 在 java.lang.reflect.Method.invoke(Method.java) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)

【问题讨论】:

我认为由于您在可绘制文件夹中没有该可绘制对象,因此会给您错误 如果你将drawable添加到不同的文件夹,那么它也应该在drawable文件夹中 @primo 你说的不是 mdpi-xxxdpi 文件夹。我还需要将我的drawables放在drawable文件夹中吗?有没有推荐这个的文档? @primo 尝试了您的答案。不工作。只有 vivo 手机会显示此错误。 出现问题的 Android 版本是什么?如果您使用VectorDrawable,那么为了向后兼容,请尝试以这种方式加载图像:AppCompatResources.getDrawable(getContext(), R.drawable.your_vector_image); 但恐怕这对 SDK 中的 facebook 图像没有帮助。 【参考方案1】:

我几乎完全在 Vivo 手机上遇到了同样的问题,然后我将图像添加到 noDpi 并解决了它。

【讨论】:

以上是关于对于 Vivo 设备上的几个 Drawable,Resources$NotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

ADB常用的几个命令

Android 仿vivo的SeekBar样式

网络中易于混淆的几个硬件设备

大量生成一堆条纹对R中的几个x轴变量?

(亲测可行)vivo设备一键激活xposed框架方法

怎么获取drawable对象呀