我有一个ContentProvider类,并在AndroidMenifest.xml中声明如下:
<provider android:name=".MediaSearchProvider"
android:authorities="org.iii.romulus.meridian.mediasearch">
<path-permission android:path="/search_suggest_query"
android:readPermission="android.permission.GLOBAL_SEARCH" />
</provider>
Run Code Online (Sandbox Code Playgroud)
它适用于大多数设备,但市场告诉我一些用户正在遭遇错误.堆栈跟踪是:
java.lang.RuntimeException: Unable to get provider org.iii.romulus.meridian.MediaSearchProvider: java.lang.ClassNotFoundException: org.iii.romulus.meridian.MediaSearchProvider in loader dalvik.system.PathClassLoader[/mnt/asec/org.iii.romulus.meridian-1/pkg.apk]
at android.app.ActivityThread.installProvider(ActivityThread.java:4509)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4281)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4237)
at android.app.ActivityThread.access$3000(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
at android.os.Handler.dispatchMessage(Handler.java:99)
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:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: org.iii.romulus.meridian.MediaSearchProvider in loader dalvik.system.PathClassLoader[/mnt/asec/org.iii.romulus.meridian-1/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.ActivityThread.installProvider(ActivityThread.java:4494)
... 12 more
Run Code Online (Sandbox Code Playgroud)
我完全不知道发生了什么,我无法在任何手机上重现它.我也试过干净和构建,但报告仍然出现.有人可以帮忙吗?谢谢!
关于proguard的答案是不正确的.这样每次都会在每部手机上产生容易重现的错误,因为ContentProvider类会完全丢失.开发人员明确指出他们无法重现错误,这意味着ContentProvider类存在但由于某种原因未在用户的某个手机上找到.
我在我的应用程序的市场上报告了相同的崩溃.堆栈跟踪看起来完全相同,并且错误发生在installProvider上.我办公室里有大约15部测试手机,但没有一部可以重现这个问题.任何其他想法将不胜感激.
只有当您的java包名称与您的android包名称不同时,才需要清单中的完全限定名称.如果未指定完全限定名称,操作系统将自动将android包名称添加到清单中指定的类名称.
| 归档时间: |
|
| 查看次数: |
9995 次 |
| 最近记录: |