8

我的应用程序目前最严重的用户报告崩溃如下。系统似乎找不到文件 res/drawable-hdpi/scrollbar_handle_vertical.9.png 下面的示例表明问题发生在绘制 webview 时,但它也发生在我的应用程序中的其他活动中,所有这些都可以正常工作时间。

我认为这是一个我不需要担心的 android 资源。但是,为了测试,我从 sdk 中取出文件并将其放入我的项目 drawable-hdpi 文件夹中,用于我的应用程序的最新版本。但是,我仍然观察 google play 中的崩溃报告。

关于可能发生什么的任何想法?

我现在也没有使用 progaurd,所以没有办法删除它不应该删除的文件。

android.view.InflateException: Binary XML file line #26: Error inflating class com.android.internal.app.AlertController$RecycleListView
at android.view.LayoutInflater.createView(LayoutInflater.java:513)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
at android.webkit.WebView$InvokeListBox.run(WebView.java:8308)
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:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at com.android.internal.app.AlertController$RecycleListView.<init>(AlertController.java:703)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
at android.view.LayoutInflater.createView(LayoutInflater.java:500)
... 14 more
Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi/scrollbar_handle_vertical.9.png from drawable resource ID #0x0
at android.content.res.Resources.loadDrawable(Resources.java:1714)
at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
at android.widget.AbsListView.<init>(AbsListView.java:630)
at android.widget.ListView.<init>(ListView.java:230)
at android.widget.ListView.<init>(ListView.java:226)
... 18 more
Caused by: java.io.FileNotFoundException: res/drawable-hdpi/scrollbar_handle_vertical.9.png
at android.content.res.AssetManager.openNonAssetNative(Native Method)
at android.content.res.AssetManager.openNonAsset(AssetManager.java:405)
at android.content.res.Resources.loadDrawable(Resources.java:1706)
... 22 more
4

2 回答 2

2

似乎一个(或多个设备)上缺少此资源。即该设备上的 Android 版本缺少此文件。看看这个问题是否会影响非常特定的设备会很有趣。

我希望解决方案是在您的应用程序本身中使用可绘制对象(而不是依赖 android 中的绘制对象)并确保引用您的对象,而不是某些设备上缺少的对象。

您可以使用 BugSense 之类的工具来跟踪此类问题,以收集有关受影响设备和平台版本的数据。如果您无法从 Google Play 商店报告中获取此信息,这将非常有用。

于 2012-04-24T22:30:54.627 回答
0

发生这种情况的另一种情况 - 当您使用更高版本的 android 中引入的属性/资源时。索引有一些复杂的映射属性,当 appt 生成 R.java 时,它可能会重叠一些旧的 id,并且会发生这个非常奇怪的错误。

对我来说,在 api 11 中引入了 in view 时出现了同样的错误
android:foreground="?android:attr/selectableItemBackground"

selectableItemBackground,但在 api 7 的模拟器中启动。

因此,请检查您的布局是否使用了一些在您的 minSdkVersion 之后引入的资源。可以在R.java 参考中检查

于 2015-08-06T17:42:55.600 回答