2010-05-04 40 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

相關問題