FileNotFoundException:仅限Play商店崩溃日志中的res/drawable-xhdpi-v4/foo.png

tsm*_*ith 10 android

在我们4.0发布的应用程序版本的过去两天里,我们已经看到了大约40起这些崩溃事件.在查看崩溃日志之后,我们发现它自我们的应用程序版本3.3起就存在了.我们无法在内部重现这一点.

进一步的研究表明这个问题在其他应用程序中很普遍,但我无法找到解决方案或表明Google已经意识到这个问题.

崩溃本身发生在onCreate()中的setContentView(R.layout.foo)方法调用上

笔记:

  • 我们将API限制为版本4和目标15.
  • 我们已经在mdpi,hdpi,xhdpi手机和平板电脑上看到至少2.2 - 4.0.3.
  • 用户注释指定应用程序立即崩溃(预期)并且应用程序启动器中的Evernote图标变为默认应用程序图标(无法读取任何可绘制的图标).
  • 崩溃不仅限于一个特定的drawable,我们在日志中看到了许多不同的,但它们都"看起来"是图像绘制,而不是颜色,布局,xml文件等......
  • 这不仅限于9个补丁,它发生在常规.png和.9.png上

我们的可绘制文件夹看起来像附图 可绘

  • 我们只在我们的drawable文件夹中存储xml

堆栈跟踪:

android.content.res.Resources$NotFoundException: File res/drawable/ics_tab_title_unselected.xml from drawable resource ID #0x7f02016f
at android.content.res.Resources.loadDrawable(Resources.java:1697)
at android.content.res.Resources.getDrawable(Resources.java:581)
at android.view.View.setBackgroundResource(View.java:7533)
at com.evernote.ics.ActionBarTabbedTitle.a(ActionBarTabbedTitle.java:103)
at com.evernote.ics.j.a(ActivityActionBar.java:150)
at com.evernote.ics.a.c(ActionBar.java:731)
at com.evernote.ics.a.p(ActionBar.java:440)
at com.evernote.ics.a.g(ActionBar.java:423)
at com.evernote.ics.j.m(ActivityActionBar.java:68)
at com.evernote.ics.phone.SwipeableTabbedActivityAbstract.s(SwipeableTabbedActivityAbstract.java:990)
at com.evernote.ics.phone.SwipeableTabbedActivityAbstract.a(SwipeableTabbedActivityAbstract.java:662)
at com.evernote.ics.phone.SwipeableTabbedActivityAbstract.b(SwipeableTabbedActivityAbstract.java:617)
at com.evernote.ics.phone.PhoneMainActivity.b(PhoneMainActivity.java:113)
at com.evernote.ui.EvernoteFragment.a(EvernoteFragment.java:136)
at com.evernote.ui.EvernoteFragment.a(EvernoteFragment.java:132)
at com.evernote.ui.EvernoteFragment.d(EvernoteFragment.java:128)
at com.evernote.ics.phone.b.onItemClick(HomeFragment.java:1324)
at android.widget.AdapterView.performItemClick(AdapterView.java:284)
at android.widget.ListView.performItemClick(ListView.java:3513)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-v4/tab_unselected_focus.9.png from drawable resource ID #0x7f0201e6
at android.content.res.Resources.loadDrawable(Resources.java:1714)
at android.content.res.Resources.getDrawable(Resources.java:581)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1694)
... 28 more
Caused by: java.io.FileNotFoundException: res/drawable-xhdpi-v4/tab_unselected_focus.9.png
at android.content.res.AssetManager.openNonAssetNative(Native Method)
at android.content.res.AssetManager.openNonAsset(AssetManager.java:406)
at android.content.res.Resources.loadDrawable(Resources.java:1706)
... 33 more
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议.

应用:https://play.google.com/store/apps/details?id = com.evernote

谢谢,

小智 0

通过在“proguard”文件中添加以下内容解决了类似的错误。

-keepclassmembers class **.R$* {
    public static <fields>;
}
Run Code Online (Sandbox Code Playgroud)