2015-05-26 12 views
7

Uno della mia applicazione fallisce improvvisamente all'avvio, con il seguente messaggio di errore:classe Rifiutando perché non è riuscito in fase di compilazione di verifica Android

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)

Non riesce solo su dispositivi che utilizzano la macchina virtuale ART, ma non su Dalvik

+0

Possibile problema correlato su AOSP Rilevatore di problemi: https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=InstantRun%20VerifyError&colspec=ID%20Status%20Priority%20Owner%20Summary % 20Stars% 20Reporter% 20Opened & groupby = & sort = & id = 202347 – Pascal

risposta

7

Il problema è causa di avere un blocco synchronized all'interno di un blocco try-catch, ad esempio:

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

apparente LY questo non è una buona pratica, ma non appena lo cambio come questo funziona:

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

Ho avuto questo problema al con Android 5. la mia app ha fatto correttamente su 4 o sotto, ma su dispositivi Android 5 ho avuto un incidente.

ho rotto i miei codici con più Threads e risolto. se il codice desidera modificare l'interfaccia UI utilizzare il gestore .

Thread Thread = new Thread(new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      handler.post(new Runnable() { 

       @Override 
       public void run() { 
        use this if your codes will change the Ui 

. . . . .

3

in Android Studio 2.1, l'esecuzione istantanea causerà questo problema, basta eseguire dopo chiudere la funzione di esecuzione istantanea.

File -> Preferenze> Costruire Esecuzione -> Distribuzione -> Esegui istantaneo

Disabilitare la prima casella di controllo: Abilita Run istantaneo a hot swap .....

1

Se si sta costruendo con Jack, verificare che sia spenta da build.gradle

defaultConfig { 
    ... 
    versionName "1.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

    jackOptions { 
     enabled false 
    } 
} 
+0

Questo però romperebbe lambda. –

1

Questo errore potrebbe anche accadere a causa di utilizzo di Mockito all'interno di un InstrumentationTest Android. Se viene visualizzato l'errore sul beffardo oggetti allora è necessario aggiungere queste righe a voi Gradle-file:

androidTestCompile "com.crittercism.dexmaker:dexmaker:1.4" 
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:1.4" 
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:1.4" 

questo funziona per me con Mockito 1.10.15 e 1.10.19.