VerifyError in App After Upgrade
I've got a small issue which I was hoping someone could give me some insight on.
Sometimes, when a user updates my app from the market (from one version to another) they get a VerifyError upon running the app. It happens to a random class; you can use part of the app, then going to a different Activity in the app causes it to blow up. This only happens once; once Dalvik gets it out of its system it never happens again.
Since it only happens once per update (and most of the time, not at all), it is admittedly a minor issue, but I think it reflects badly on my app, so if anyone has any ideas that would be great.
The stack traces don't seem that helpful, since they always happen in a different place (which further confuses me). Here's an example of one:
java.lang.VerifyError: com.mypackage.myapp.package.SomeClass
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1472)
at android.app.Instrumentation.newActivity(Instrumentation.java:1097)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255)
at androi开发者_运维百科d.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2371)
at android.app.ActivityThread.access$1800(ActivityThread.java:118)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1759)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4077)
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:782)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
at dalvik.system.NativeStart.main(Native Method)
It turns out that I was being caught up with this bug: http://code.google.com/p/android/issues/detail?id=2886
The issue is that if the widget receiver loads before the app, then any attempts to access the Google Maps API in the same process fails. This only happens in Android 1.5, but it would happen each time someone upgrades the app.
The solution was to put the receivers in a different process.
精彩评论