XGouchet XGouchet - 5 months ago 428
Android Question

Rejecting class because it failed compile-time verification Android

One of my application suddenly fails on startup, with the following error message :


java.lang.VerifyError: Rejecting class
com.sample.BufferManagerImpl because it failed
compile-time verification (declaration of
'com.sample.BufferManagerImpl' appears in
/data/app/com.sample.myapp-1/base.apk)


It only fails on devices using the ART virtual machine, but not on Dalvik

Answer

The issue is due to having a synchronized block inside a try-catch block, for example :

try {
    synchronized (mLock) {
        updateState();
    }
} catch (IllegalStateException e) {
}

Apparently this is not a good practice, but as soon as I change it like this it works :

synchronized(mLock) {
    try {
        updateState();
    } catch (IllegalStateException e) {
    }
}
Comments