我一直在阅读有关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? 有什么建议么。
答案 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 。它将向您确切显示要做什么,这并不是很难。