java.lang.VerifyError异常拒绝程序包中的类

时间:2018-07-10 08:41:09

标签: android verifyerror

我一直在阅读有关verifyError异常的信息,但似乎找不到解决我问题的好方法。

日志给我以下错误:

Caused by: java.lang.VerifyError: Verifier rejected class mypackage.GraphThready: void mypackage.GraphThready.run() failed to verify: void mypackage.GraphThready.run(): [0x50BE] copy1 v2<-v398 type=Undefined cat=1 (declaration of 'mypackage.GraphThready' appears in /data/app/mypackage-2/split_lib_slice_9_apk.apk)

我不知道这是因为我的类mypackage.GraphThready被声明了两次,还是因为我正在使用API​​ 24(版本号7.0)在Android设备上测试我的应用程序的事实

这是应用gradle文件的一部分:

compileSdkVersion 26
buildToolsVersion '27.0.3'
defaultConfig {
    applicationId "mypackage"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 2
    versionName "2.0"
    multiDexEnabled true

也许我应该将“ compiledSdkVersion”更改为24? 有什么建议么。

1 个答案:

答案 0 :(得分:0)

大量阅读,更新和编译我的android应用程序后,我发现我没有添加适当的multi-dex支持。事实证明,我要做的就是将我的gradle文件中的minSdkVersion增加到至少21个(Lollipop设备)。根据此处找到的Android设备仪表板 https://developer.android.com/about/dashboards/ ,约有10.3%的Android设备运行KitKat,这在较低级别的API(<21)中占很大的百分比。我假设这是一个全球范围的数字,与美国这里的Android设备中的API级别分布无关,我将在该市场发布该应用程序。因此,我将minSdkVersion更改为21,并在gradle文件中保持multiDexEnabled = true,错误消失了。 对于那些支持Lollipop之前的设备并希望添加多葡聚糖支持的用户,请单击此处 https://developer.android.com/studio/build/multidex 。它将向您确切显示要做什么,这并不是很难。