E/AndroidRuntime(22035): FATAL EXCEPTION: main E/AndroidRuntime(22035): java.lang.VerifyError: com/sample/FileUtils E/AndroidRuntime(22035): at com.sample.App.onCreate(App.java:16) E/AndroidRuntime(22035): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:999) E/AndroidRuntime(22035): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4220) E/AndroidRuntime(22035): at android.app.ActivityThread.access$1300(ActivityThread.java:137) E/AndroidRuntime(22035): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) E/AndroidRuntime(22035): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(22035): at android.os.Looper.loop(Looper.java:137) E/AndroidRuntime(22035): at android.app.ActivityThread.main(ActivityThread.java:4819) E/AndroidRuntime(22035): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(22035): at java.lang.reflect.Method.invoke(Method.java:511) E/AndroidRuntime(22035): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) E/AndroidRuntime(22035): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) E/AndroidRuntime(22035): at dalvik.system.NativeStart.main(Native Method)
W/dalvikvm(22035): VFY: unable to resolve static method 13457: Landroid/system/Os;.stat (Ljava/lang/String;)Landroid/system/StructStat; W/dalvikvm(22035): VFY: unable to resolve exception class 1594 (Landroid/system/ErrnoException;) W/dalvikvm(22035): VFY: unable to find exception handler at addr 0xe W/dalvikvm(22035): VFY: rejected Lcom/sample/FileUtils;.getUid (Ljava/lang/String;)I W/dalvikvm(22035): VFY: rejecting opcode 0x0d at 0x000e W/dalvikvm(22035): VFY: rejected Lcom/sample/FileUtils;.getUid (Ljava/lang/String;)I W/dalvikvm(22035): Verifier rejected class Lcom/sample/FileUtils;
Log也似乎与平常使用高版本SDK类时的兼容性警告类似:
W/dalvikvm(22524): VFY: unable to resolve virtual method 684: Landroid/content/res/Resources;.getColor (ILandroid/content/res/Resources$Theme;)I W/dalvikvm(22524): VFY: unable to resolve virtual method 686: Landroid/content/res/Resources;.getColorStateList (ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; W/dalvikvm(22524): VFY: unable to resolve virtual method 693: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
回到崩溃开始的警告,”unable to resolve static method” 这条日志应该不会是导致VerifyError的元凶。(注:出现这个警告意味着你如果运行时用到了这个方法,运行时将会报错,如InstantiationError、NoSuchMethodError之类)
那么应该是关键的一句:”unable to find exception handler at addr 0xe“,导致后面的”rejected Lcom/sample/FileUtils;.getUid (Ljava/lang/String;)I” 并最终导致”Verifier rejected class Lcom/sample/FileUtils;”