Search code examples
javaandroidandroid-syncadapterverifyerror

java.lang.VerifyError using SyncAdapter


I'm developing an app using this tutorial: http://udinic.wordpress.com/2013/07/24/write-your-own-android-sync-adapter/ and code from this repository: https://github.com/Udinic/SyncAdapter.

But when I'm trying to trigger the sync process, I get java.lang.VerifyError.

06-02 17:42:56.311  19517-19517/cz.package.name.app W/dalvikvm﹕ VFY: unable to resolve exception class 168 (Landroid/os/OperationCanceledException;)
06-02 17:42:56.311  19517-19517/cz.package.name.app W/dalvikvm﹕ VFY: unable to find exception handler at addr 0xc3
06-02 17:42:56.311  19517-19517/cz.package.name.app W/dalvikvm﹕ VFY:  rejected Lcz/package/name/app/syncadapter/RecordSyncAdapter;.onPerformSync (Landroid/accounts/Account;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/ContentProviderClient;Landroid/content/SyncResult;)V
06-02 17:42:56.311  19517-19517/cz.package.name.app W/dalvikvm﹕ VFY:  rejecting opcode 0x0d at 0x00c3
06-02 17:42:56.311  19517-19517/cz.package.name.app W/dalvikvm﹕ VFY:  rejected Lcz/package/name/app/syncadapter/RecordSyncAdapter;.onPerformSync (Landroid/accounts/Account;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/ContentProviderClient;Landroid/content/SyncResult;)V
06-02 17:42:56.311  19517-19517/cz.package.name.app W/dalvikvm﹕ Verifier rejected class Lcz/package/name/app/syncadapter/RecordSyncAdapter;
06-02 17:42:56.311  19517-19517/cz.package.name.app D/AndroidRuntime﹕ Shutting down VM
06-02 17:42:56.311  19517-19517/cz.package.name.app W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40c6e1f8)
06-02 17:42:56.311  19517-19517/cz.package.name.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.VerifyError: cz/package/name/app/syncadapter/RecordSyncAdapter
            at cz.package.name.app.syncadapter.RecordSyncService.onCreate(RecordSyncService.java:27)
            at android.app.ActivityThread.handleCreateService(ActivityThread.java:2265)
            at android.app.ActivityThread.access$1600(ActivityThread.java:127)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1213)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4507)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
            at dalvik.system.NativeStart.main(Native Method)

No solution I've found so for worked for me. I will be happy for any advice!


Solution

  • Somewhere, perhaps in onPerformSync(), your code is referencing OperationCanceledException. That class only exists on API Level 16+, and you would appear to be trying to use it on an older Android device.