Upgrading Android SDK causes java.lang.VerifyError crash
android, android-support-library, java, verifyerror
Solution
The library has to be placed in /libs folder (note: not /lib)
Problem
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 ```