Java.lang.VerifyError: Verifier отклонил класс на Lollipop при использовании release APK

Я получаю эту ошибку, когда устанавливаю APK выпуска на устройстве 5.x Ошибка не возникает, когда я нажимаю тот же код из Android Studio или запускаю его на устройстве 4.x

 java.lang.VerifyError: Verifier rejected class com.myapp.android.ui.activity.MainActivity$$ViewInjector due to bad method void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) (declaration of 'com.myapp.android.ui.activity.MainActivity$$ViewInjector' appears in /data/app/com.myapp.android-2/base.apk) at java.lang.Class.classForName(Class.java) at java.lang.Class.forName(Class.java:308) at java.lang.Class.forName(Class.java:272) at butterknife.ButterKnife.findInjectorForClass(ButterKnife.java:298) at butterknife.ButterKnife.inject(ButterKnife.java:271) at butterknife.ButterKnife.inject(ButterKnife.java:184) at com.myapp.android.ui.activity.MyDrawerActivity.onCreate(MyDrawerActivity.java:31) 

Я вставляю свою панель инструментов и настраиваемый NavigationDrawer в класс.

 @InjectView(R.id.toolbar) Toolbar mToolbar; @InjectView(R.id.nav_drawer) MyNavigationDrawer mNavigationDrawer; 

Строка 31:

 ButterKnife.inject(this); 

Есть ли что-то, что будет отличаться от gradle assembleRelease при использовании gradle assembleRelease ? Я вообще не использую ProGuard.

Вот мои другие настройки сборки Android:

 # Android SDK settings ANDROID_BUILD_MIN_SDK_VERSION=14 ANDROID_BUILD_TARGET_SDK_VERSION=21 ANDROID_BUILD_SDK_VERSION=21 ANDROID_BUILD_TOOLS_VERSION=21.1.2 

Logcat

 I/art (21354): Verification error in void com.myapp.android.ui.activity.MainActivity$$ViewInjector.inject(butterknife.ButterKnife$Finder, com.myapp.android.ui.activity.MainActivity, java.lang.Object) I/art (21354): void com.myapp.android.ui.activity.MainActivity$$ViewInjector.inject(butterknife.ButterKnife$Finder, com.myapp.android.ui.activity.MainActivity, java.lang.Object) failed to verify: register v4 has type Reference: com.myapp.android.ui.activity.MainActivity but expected Reference: com.myapp.android.ui.activity.LoggedInNavActivitya.lang.Object): [0x0] I/art (21354): Verification error in void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) I/art (21354): void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) failed to verify: register v1 has type Reference: com.myapp.android.ui.activity.MainActivity but expected Reference: com.myapp.android.ui.activity.LoggedInNavActivity E/art (21354): Verification failed on class com.myapp.android.ui.activity.MainActivity$$ViewInjector in /data/app/com.myapp.android-1/base.apk because: Verifier rejected class com.myapp.android.ui.activity.MainActivity$$ViewInjector due to bad method void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) 

Solutions Collecting From Web of "Java.lang.VerifyError: Verifier отклонил класс на Lollipop при использовании release APK"

Устранение проблемы с build исправлено. Не знаю, почему у АРТ была проблема, но у Дальвика этого не было.

Выполнение задачи clean градиента полностью не очищало мою папку build . Я должен был сделать это вручную, но clean могут работать для некоторых людей.

В моем случае причина была несколько иной.

По-видимому, размещение synchronized оператора внутри блока try/catch вызывает VerifyError , как описано здесь в SO и на официальном трекере ошибок .

В моем случае я просто отключил параметр «Мгновенный запуск» из настроек «Сборка, выполнение, развертывание». К сожалению, студийная студия Android «Instant Run» еще далека от стабильности …

Для этого:

  1. Перейдите в «Файл»> «Настройки»> «Сборка, выполнение, развертывание»> «Мгновенный запуск»,
  2. Снимите флажок «Включить мгновенный запуск …» и нажмите кнопку «ОК»

В моем случае причиной является proguard. Мое приложение отключилось от sumsung note3 whick и Android 5.0.
Я импортировал android-async-http-1.4.9.jar, proguard:

 -dontwarn com.loopj.android.http.** -keep class com.loopj.android.http.**{*;} 

Этого не достаточно. Я добавил:

 -dontwarn cz.msebera.** -keep class cz.msebera.**{*;} 

Ошибка исчезла.

Поэтому, если вы попадете в эту ошибку, то глубоко укоренившаяся причина, возможно, не очевидна, следует отметить файл proguard.

У меня была та же проблема, что и GoogleTagManager .

Java.lang.VerifyError: Verifier отклонен класс com.google.android.gms.tagmanager.TagManager: com.google.android.gms.common.api.PendingResult com.google.android.gms.tagmanager.TagManager.loadContainerDefaultOnly (java. Lang.String, int) не удалось проверить: com.google.android.gms.common.api.PendingResult com.google.android.gms.tagmanager.TagManager.loadContainerDefaultOnly (java.lang.String, int): [0x11] возвращает 'Ссылка: com.google.android.gms.tagmanager.zzp', но ожидается из декларации 'Reference: com.google.android.gms.common.api.PendingResult'

Это произошло после слияния. Мой коллеж обновил библиотеку с 10.0.1 по 10.2.1 . Чистая сборка не сработала.

Из-за ограничений по времени я откатился к старой версии, и это сработало.