2010-05-04 37 views
1

我已经开发了一个应用程序,它有几个包内的项目... 在其中一个包中的类马上被调用的第一行代码,这引发了可怕的java.lang.NoClassDefFoundError错误... 我不明白,这个软件包只是在项目中,它在我的Android 1.6设备上工作正常,但不能用于我的1.5设备。 我不得不说,该项目最初设置为1.6,但后来我将清单内的内容从4改为3 ... 这是不好的做法吗?或者,它可能与平台版本无关?java.lang.NoClassDefFoundError抛出我自己的包在Android 1.5

而且我得到这些线路从DDMS WEL:

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设备是一个非开发设备...

+1

对于向后兼容性:http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html。如果只是这个单一字段,请使用反射。 – fadden 2010-05-06 16:58:57

回答

1

验证者之间没有太大的变化1.5和1.6之间,所以它应该是同样的开心或不高兴每个。 (On> = 2.0,它会在第一次使用该字段时抛出NoSuchFieldError,而不是拒绝整个类)

问题似乎是Build.MANUFACTURER字段在Android 1.5中不存在“蛋糕”)。我相信它是在1.6(“甜甜圈”)中引入的。

+0

谢谢我检查了文档,你是正确的,它不支持1.5 仍然我必须找到一种方法,使其向后兼容 – TiGer 2010-05-06 11:45:58

相关问题