javaandroidandroid-support-libraryverifyerror

Upgrading Android SDK causes java.lang.VerifyError crash


Since upgrading my Android SDK, I get a java.lang.VerifyError crash booting my previously working application.

Looking at the logs, there are a few new issues leading up the crash that were not there previously:

Could not find method android.support.v4.content.LocalBroadcastManager.getInstance, referenced from method com.myapp.android.App.setOAuthLoginState
04-12 19:43:10.249: W/dalvikvm(9508): VFY: unable to resolve static method 251: Landroid/support/v4/content/LocalBroadcastManager;.getInstance (Landroid/content/Context;)Landroid/support/v4/content/LocalBroadcastManager;
04-12 19:43:10.249: D/dalvikvm(9508): VFY: replacing opcode 0x71 at 0x0014

android.support.v4.content.LocalBroadcastManager.getInstance appears to still be in the source code for the Android Compatibilty library. This warning is logged before my App.onCreate() is called BTW.

I have tried using both the older version of android-support-v4.jar that previously worked with my application, and also the new version of android-support-v4.jar included in the latest SDK, but the result is the same in both cases (which seems interesting right?).

Also weird is the stream of warnings like so:

W/dalvikvm(12455): VFY: unable to find class referenced in signature (Ltwitter4j/User;)

The twitter4j library referenced here appears to be included correctly in my project.

I'm still learning Java, so am unsure what might be causing this issue. Any help would be greatly appreciated.

FYI the full log is below:

04-12 19:43:07.585: W/ActivityThread(9508): Application com.myapp.android is waiting for the debugger on port 8100...
04-12 19:43:07.593: I/System.out(9508): Sending WAIT chunk
04-12 19:43:07.601: I/dalvikvm(9508): Debugger is active
04-12 19:43:07.796: I/System.out(9508): Debugger has connected
04-12 19:43:07.796: I/System.out(9508): waiting for debugger to settle...
04-12 19:43:10.007: I/System.out(9508): debugger has settled (1403)
04-12 19:43:10.249: I/dalvikvm(9508): Could not find method android.support.v4.content.LocalBroadcastManager.getInstance, referenced from method com.myapp.android.App.setOAuthLoginState
04-12 19:43:10.249: W/dalvikvm(9508): VFY: unable to resolve static method 251: Landroid/support/v4/content/LocalBroadcastManager;.getInstance (Landroid/content/Context;)Landroid/support/v4/content/LocalBroadcastManager;
04-12 19:43:10.249: D/dalvikvm(9508): VFY: replacing opcode 0x71 at 0x0014
04-12 19:43:10.265: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/Twitter;)
04-12 19:43:10.265: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/Twitter;)
04-12 19:43:10.272: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/User;)
04-12 19:43:10.272: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/User;)
04-12 19:43:10.272: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/User;)
04-12 19:43:10.272: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/User;)
04-12 19:43:10.272: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/User;)
04-12 19:43:10.272: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/User;)
04-12 19:43:10.272: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/Twitter;)
04-12 19:43:10.280: E/dalvikvm(9508): Could not find class 'twitter4j.conf.ConfigurationBuilder', referenced from method org.tweetalib.twitter.TwitterManager.getAndConfigureTwitterInstance
04-12 19:43:10.280: W/dalvikvm(9508): VFY: unable to resolve new-instance 528 (Ltwitter4j/conf/ConfigurationBuilder;) in Lorg/tweetalib/twitter/TwitterManager;
04-12 19:43:10.280: D/dalvikvm(9508): VFY: replacing opcode 0x22 at 0x0013
04-12 19:43:10.288: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/auth/RequestToken;)
04-12 19:43:10.288: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/auth/RequestToken;)
04-12 19:43:10.296: W/dalvikvm(9508): VFY: unable to find class referenced in signature (Ltwitter4j/Twitter;)
04-12 19:43:10.296: I/dalvikvm(9508): Could not find method twitter4j.Twitter.getAccountSettings, referenced from method org.tweetalib.twitter.TwitterManager.isAuthenticated
04-12 19:43:10.296: W/dalvikvm(9508): VFY: unable to resolve interface method 2419: Ltwitter4j/Twitter;.getAccountSettings ()Ltwitter4j/AccountSettings;
04-12 19:43:10.296: D/dalvikvm(9508): VFY: replacing opcode 0x72 at 0x0008
04-12 19:43:10.296: W/dalvikvm(9508): VFY: unable to resolve exception class 519 (Ltwitter4j/TwitterException;)
04-12 19:43:10.296: W/dalvikvm(9508): VFY: unable to find exception handler at addr 0xd
04-12 19:43:10.296: W/dalvikvm(9508): VFY:  rejected Lorg/tweetalib/twitter/TwitterManager;.isAuthenticated ()Z
04-12 19:43:10.296: W/dalvikvm(9508): VFY:  rejecting opcode 0x0d at 0x000d
04-12 19:43:10.296: W/dalvikvm(9508): VFY:  rejected Lorg/tweetalib/twitter/TwitterManager;.isAuthenticated ()Z
04-12 19:43:10.296: W/dalvikvm(9508): Verifier rejected class Lorg/tweetalib/twitter/TwitterManager;
04-12 19:43:10.538: D/dalvikvm(9508): threadid=1: still suspended after undo (sc=1 dc=1)
04-12 19:43:16.780: D/AndroidRuntime(9508): Shutting down VM
04-12 19:43:16.780: W/dalvikvm(9508): threadid=1: thread exiting with uncaught exception (group=0x40a5a1f8)
04-12 19:43:16.804: E/AndroidRuntime(9508): FATAL EXCEPTION: main
04-12 19:43:16.804: E/AndroidRuntime(9508): java.lang.VerifyError: org/tweetalib/twitter/TwitterManager
04-12 19:43:16.804: E/AndroidRuntime(9508):     at com.myapp.android.App.onCreate(App.java:308)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3925)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at android.app.ActivityThread.access$1300(ActivityThread.java:122)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at android.os.Looper.loop(Looper.java:137)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at android.app.ActivityThread.main(ActivityThread.java:4340)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at java.lang.reflect.Method.invokeNative(Native Method)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at java.lang.reflect.Method.invoke(Method.java:511)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-12 19:43:16.804: E/AndroidRuntime(9508):     at dalvik.system.NativeStart.main(Native Method)
04-12 19:43:20.585: W/jdwp(9508): Debugger is telling the VM to exit with code=1
04-12 19:43:20.585: I/dalvikvm(9508): GC lifetime allocation: 10536 bytes

Solution

  • The library has to be placed in /libs folder (note: not /lib)