Ten błąd pojawia się podczas instalowania mojego wydania APK na urządzeniu 5.x
. Błąd nie występuje, gdy wypycham ten sam kod z Android Studio, lub gdy uruchamiam go na urządzeniu 4.x
.java.lang.VerifyError: Weryfikacja klasy odrzuconej na Lollipop podczas korzystania z wydania APK
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)
Wstrzyknę mój pasek narzędzi i niestandardowy element nawigacyjny NavigationDrawer w klasie.
@InjectView(R.id.toolbar) Toolbar mToolbar;
@InjectView(R.id.nav_drawer) MyNavigationDrawer mNavigationDrawer;
Linia 31:
ButterKnife.inject(this);
Czy istnieje coś, co byłoby inaczej z Codegen butterknife podczas korzystania gradle assembleRelease
? W ogóle nie używam ProGuarda.
Oto moje inne ustawienia Android produkcji:
# 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)
można pokazać wyjście logcat? W dzienniku mogą pojawiać się dodatkowe informacje przed wyjątkiem. (W Dalvik nie było pewności, co pokazuje Art.) – fadden
Dodałem logi, które pojawiają się tuż przed błędem. Widzę jeden problem od razu. Linia 2 pokazuje klasę nadrzędną o nazwie "LoggedInNavActivitya", a "a" nie jest w rzeczywistej nazwie. Drugi rażący problem, że "LoggedInNavActivity" nie jest już w mojej bazie kodu ... Usunąłem ten plik jakiś czas temu. –