当前位置: 首页 > 面试题库 >

java.lang.VerifyError:使用发行版APK时,验证程序拒绝了Lollipop上的类

索锐藻
2023-03-14
问题内容

5.x设备上安装发行版APK时收到此错误。当我从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);

使用时,Butterknife代码生成器会有什么不同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)

问题答案:

清理build文件夹解决了该问题。不知道为什么ART有问题,但Dalvik没有。

运行gradle clean任务并不能完全清除我的build文件夹。我必须手动执行此操作,但clean可能对某些人有用。



 类似资料:
  • 我实现了Firebase身份验证,当应用程序从Android Studio安装而不是从导出版本apk(或谷歌Playstore)安装时,它就能正常工作。 我做了以下工作: > 从Google Play Store-Release managemet-app Signing复制了app SHA-1证书指纹。 在Firebase控制台的Project settings-My App下,我添加了指纹并粘

  • 根据Nutch教程 http://wiki.apache.org/nutch/httpauthenticationschemes#a_note_on_ntlm_domains > 我已经在文件中设置了auth-configuration: http.auth.file httpclient-auth.xml“protocol-httpclient”插件的身份验证配置文件。 但对我来说没有成功! 是

  • 我试图从Java代码运行chimpchat,但我得到了以下错误: 意外异常“无法运行程序”/home/asco/adt-bundle-linux-x86_64/sdk/platform-tools“:错误=13,试图从”/home/asco/adt-bundle-linux-x86_64/sdk/platform-tools“获取adb版本时拒绝”权限“ 我可以以普通用户的身份从shell运行ad

  • 我正在运行一个非常基本的Javamail程序来尝试发送电子邮件。这是带有main()的独立程序。一旦我让它工作,我计划在tomcat下运行的servlet中使用Javamail。 运行此程序时,我收到身份验证登录失败错误。我尝试了几种不同的属性设置,但都没有解决问题。 然后我在SO上找到一篇帖子,建议降低我谷歌账户的安全级别。当我降低安全设置时,身份验证成功。 当然,我立即回到了谷歌账户的更高安全

  • 我有一个完全相同的代码部署在heroku应用程序。我将heroku堆栈更新为18,但现在由于需要在新堆栈发生之前进行构建,我得到了以下错误。我尝试了所有不同的场景,包括force push、git push、heroku Master:Main-f,但似乎都不起作用。 下面是构建即将完成之前的错误日志。 远程:----->检测到nginx-buildpack应用程序 Remote:cp:无法sta

  • 在我的应用审查期间,我收到了以下内容:“17.2:需要用户共享个人信息(如电子邮件地址和出生日期)才能运行的应用将被拒绝 具体来说,您的应用程序使用Facebook登录仅用于身份验证目的,但不包括该网站提供的基于帐户的功能,这在App Store上是不允许的。 为了让脸书成为唯一可用的身份验证机制,您的应用程序必须包括来自脸书的重要帐户特定功能。对于作为唯一可用的认证机制的脸书来说,提取简档信息或