Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
424 views
in Technique[技术] by (71.8m points)

android - ResourceNotFoundException for drawable at launch

Problem

Sometimes a crash caused by a ResourceNotFoundException is reported to me. This exception is caused at the launch of my app : the app seems to doesn't get a drawable resource in my first screen.

Environment

My drawable is a png and exists in mdpi, hdpi, xhdpi, xxhdpi and xxxhdpi. I'm using View Binding and Fragment to get my layout and the id of the drawable is specified in my xml

Side notes

I don't know if it's because of the first needed drawable or if all my drawables are absent, because it crashes at launch.

This exception happens rarely but enough to be observed, recently it happened on a Pixel 4 and a Galaxy A20s. I have personally never been able to reproduce this error.

Question

Is it possible that Play Store doesn't give drawables when a user downloads my app ? How can I be sure that drawables are presents in my app ?

Log

Here are log that I receive :

Caused by android.view.InflateException: Binary XML file line #25 in xx.xxx.xxx:layout/fragment_home: Error inflating class ImageView

and

Caused by android.content.res.Resources$NotFoundException: Resource ID #0x7f0800c7
       at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:237)
       at android.content.res.Resources.getValue(Resources.java:1428)
       at androidx.appcompat.widget.ResourceManagerInternal.createDrawableIfNeeded(ResourceManagerInternal.java:176)
       at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:141)
       at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
       at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104)
       at androidx.appcompat.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:63)
       at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:82)
       at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:69)
       at androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:199)
       at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:119)
       at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1551)
       at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1602)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:240)
       at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1059)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:995)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
       at xx.xxx.xxx.databinding.FragmentHomeBinding.inflate(FragmentHomeBinding.java:125)
       at xx.xxx.xxx.databinding.FragmentHomeBinding.inflate(FragmentHomeBinding.java:119)
       at xx.xxx.xxx.fragments.home.HomeFragment.onCreateView(HomeFragment.kt:52)
       at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2699)
       at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1199)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1368)
       at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1446)
       at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:442)
       at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2181)
       at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2004)
       at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1959)
       at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1830)
       at androidx.fragment.app.BackStackRecord.commitNow(BackStackRecord.java:297)
       at androidx.viewpager2.adapter.FragmentStateAdapter.placeFragmentInViewHolder(FragmentStateAdapter.java:341)
       at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:276)
       at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:67)
       at androidx.recyclerview.widget.RecyclerView.dispatchChildAttached(RecyclerView.java:7556)
       at androidx.recyclerview.widget.RecyclerView$5.addView(RecyclerView.java:860)
       at androidx.recyclerview.widget.ChildHelper.addView(ChildHelper.java:107)
       at androidx.recyclerview.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:8601)
       at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:8559)
       at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:8547)
       at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1641)
       at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
       at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
       at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChild(ViewGroup.java:6928)
       at androidx.viewpager2.widget.ViewPager2.onMeasure(ViewPager2.java:498)
       at android.view.View.measure(View.java:25466)
       at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:763)
       at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:426)
       at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:105)
       at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:247)
       at androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:117)
       at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1532)
       at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1607)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
       at android.view.View.measure(View.java:25466)
       at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:763)
       at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:426)
       at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:105)
       at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:247)
       at androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:117)
       at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1532)
       at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1607)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:833)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
       at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
       at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
       at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
       at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
       at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
       at com.android.internal.policy.DecorView.onMeasure(DecorView.java:747)
       at android.view.View.measure(View.java:25466)
       at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3397)
       at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2228)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2486)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
       at android.view.Choreographer.doCallbacks(Choreographer.java:796)
       at android.view.Choreographer.doFrame(Choreographer.java:731)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
       at android.os.Handler.handleCallback(Handler.java:938)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:223)
       at android.app.ActivityThread.main(ActivityThread.java:7656)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

XML

This ImageViewconcerned :

<ImageView
  android:id="@+id/first_image"
  android:layout_width="0dp"
  android:layout_height="0dp"
  android:adjustViewBounds="

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...