Tôi gặp phải lỗi này khi tôi cài đặt APK phát hành của mình trên thiết bị 5.x
. Lỗi không xảy ra khi tôi đẩy cùng một mã từ Android Studio hoặc nếu tôi chạy nó trên thiết bị 4.x
.java.lang.VerifyError: Lớp Verifier bị từ chối trên Lollipop khi sử dụng APK phát hành
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)
Tôi tiêm Thanh công cụ và Điều hướng tùy chỉnh trong lớp.
@InjectView(R.id.toolbar) Toolbar mToolbar;
@InjectView(R.id.nav_drawer) MyNavigationDrawer mNavigationDrawer;
Dòng 31:
ButterKnife.inject(this);
Có cái gì đó sẽ khác với codegen Butterknife khi sử dụng gradle assembleRelease
? Tôi không sử dụng ProGuard chút nào.
Dưới đây là Android khác của tôi xây dựng các thiết lập:
# 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)
bạn có thể chỉ cho sản lượng logcat? Có thể có một số thông tin bổ sung trong nhật ký trước khi ngoại lệ. (Đã có trong Dalvik, không chắc chắn những gì nghệ thuật cho thấy.) – fadden
Tôi đã thêm các bản ghi hiển thị ngay trước khi lỗi. Tôi thấy một vấn đề ngay lập tức. Dòng 2 cho thấy một lớp cha được gọi là 'LoggedInNavActivitya',' a' không có trong tên thực tế. Một vấn đề rõ ràng khác rằng 'LoggedInNavActivity' không còn trong codebase của tôi nữa ... Tôi đã xóa tập tin đó một lúc trước. –