我开发了一个应用程序,它的项目中有几个包... 在第一行代码中立即调用其中一个包中的类,这会引发可怕的java.lang.NoClassDefFoundError错误... 我没有得到它,包只是在项目内,它在我的Android 1.6设备上工作正常,但不适用于我的1.5设备... 我不得不说项目最初设置为1.6,但后来我将清单中的4个更改为3 ... 这是不好的做法吗?或者它可能与平台版本无关?
此外,我也从DDMS获得这些行:
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY: unable to resolve static field 2 (MANUFACTURER) in Landroid/os/Build;
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY: rejecting opcode 0x62 at 0x0034
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY: rejected ***/android/managementModule/Management;.getDeviceSpecifics ()V
05-04 17:24:59.921: WARN/dalvikvm(2041): Verifier rejected class ***/android/managementModule/Management;
这就是ManagementModule,它也试图检索设备本身的几个信息字段...... 同样,这在1.6设备上运行得很好,即使这是一个开发设备,而我的1.5设备是非开发设备......
答案 0 :(得分:1)
验证者在1.5和1.6之间没有太大变化,因此每个人都应该同样高兴或不高兴。 (在> = 2.0时,它会在首次使用该字段的位置抛出NoSuchFieldError,而不是拒绝整个类。)
问题似乎是Android 1.5(“Cupcake”)中不存在Build.MANUFACTURER字段。我相信它是在1.6(“甜甜圈”)中引入的。