2012-04-12 29 views
9

Kể từ khi nâng cấp SDK Android của mình, tôi nhận được sự cố khởi động java.lang.VerifyError sự cố trước đây của mình.Nâng cấp Android SDK gây ra sự cố java.lang.VerifyError

Nhìn vào các bản ghi, có một vài vấn đề mới dẫn đến sự sụp đổ mà không có trước đây:

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 dường như vẫn có trong mã nguồn cho các thư viện Android năng xử lí. Cảnh báo này được ghi lại trước khi App.onCreate() của tôi được gọi là BTW.

Tôi đã thử sử dụng cả phiên bản cũ hơn android-support-v4.jar trước đây đã hoạt động với ứng dụng của mình và phiên bản mới android-support-v4.jar được bao gồm trong SDK mới nhất, nhưng kết quả là như nhau trong cả hai trường hợp (có vẻ thú vị đúng không?) .

Cũng lạ là dòng cảnh báo như vậy:

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

Thư viện twitter4j tham chiếu ở đây dường như được đưa vào một cách chính xác trong dự án của tôi.

Tôi vẫn đang học Java, vì vậy, tôi không chắc chắn điều gì có thể gây ra sự cố này. Mọi sự trợ giúp sẽ rất được trân trọng.

FYI đầy đủ nhật ký là dưới đây:

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 
+4

Bạn đã đặt thư viện trong thư mục/libs (lưu ý: không/lib) – 207

+0

@ 207 - Anh hùng của tôi! Tôi tò mò lý do cho hành vi này là gì? Bạn có muốn thêm câu trả lời này làm câu trả lời để tôi có thể đánh dấu giải pháp đó là giải pháp đúng không? –

+0

Bạn được chào đón. Vui mừng vì nó đã giúp bạn – 207

Trả lời

14

Thư viện phải được đặt trong/thư mục libs (lưu ý: không/lib)

0

Thư viện phải được đặt trong thư mục /libs, không/lib!

0

Hai giải pháp khả thi cho vấn đề này

  1. Move tất cả các file jar từ lib để libs
  2. Nếu bạn đang sử dụng Ant để xây dựng với Proguard sau đó thêm sau đây trong tập tin Proguard

     -keep class android.support.** { *; } 
         -dontnote android.support.** 
         -dontwarn android.support.** 
    
Các vấn đề liên quan