找不到方法/ java.lang.NoClassDefFoundError

时间:2016-02-01 16:51:05

标签: android android-gradle

首先,我想说一下Androids的一切都很棒> 5.0(API 21)。这个应用程序运行良好,直到最后一个版本,当时有数百名Kitkat用户开始抱怨。

我正在使用proguard,multidex功能,gradle是可以的。一切都很好,编译和工作没有错误。该应用程序正在生产中,事情很棒!除了它不再适用于API 16,17,18和19。

好的,我可以将minSdkVersion从16改为21,就是这样!但请看一下这个安装统计信息:

. android 4.4 (api 19): 23.68%
. android 4.1 (api 16): 16.81%
. android 4.2 (api 17): 8.27%
. android 4.3 (api 18): 3.63%

因此,如果我将minSdkVersion从16更改为21,我将排除52.39%的用户。这不是一个选项

我得到的错误:

Could not find method com.guilardi.questoeslibrary.db.MyDbHelper.getInstance, referenced from method com.guilardi.questoeslibrary.db.MyQuestion.sort
W/dalvikvm: VFY: unable to resolve static method 51463: Lcom/guilardi/questoeslibrary/db/MyDbHelper;.getInstance (Landroid/content/Context;)Lcom/guilardi/questoeslibrary/db/MyDbHelper;
D/dalvikvm: VFY: replacing opcode 0x71 at 0x0005
D/AndroidRuntime: Shutting down VM

02-01 10:59:22.898 6677-6677/*** E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           java.lang.NoClassDefFoundError: com.guilardi.questoeslibrary.db.MyDbHelper
                                                                               at com.guilardi.questoeslibrary.db.MyTest.setAsLast(Unknown Source)
但是,让我疯狂的是,无法访问的方法位于一个类中,该类位于调用它的类的同一个包中(com.guilardi.questoeslibrary.db)。它们都被编译在一起,第一个可以访问,第二个不可以!

有人对此有任何想法吗?请记住,它只发生在API 16,17,18和19

1 个答案:

答案 0 :(得分:0)

检查您的gradle文件。必须有一个变量minify = true。 这也给我带来了麻烦。因此,通过将其设为假来检查一次。