2010-05-04 2 views
1

Я разработал приложение, которое имеет несколько пакетов в его проекте ... Класс в одном из этих пакетов называется сразу в первой строке кода, который бросает ужасную ошибку java.lang.NoClassDefFoundError ... Я не понимаю, пакет просто находится в рамках проекта, и он отлично работает на моем устройстве Android 1.6, но не будет работать с моим устройством 1.5. Я должен сказать, что проект изначально был установлен на 1,6, но затем я изменил внутри манифеста с 4 до 3 ... Неужели это плохая практика? Или, может быть, это не имеет никакого отношения к версии платформы?java.lang.NoClassDefFoundError, брошенный с моими собственными пакетами в Android 1.5

Также я получаю эти строки как вэй из 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 является неработающим устройством ...

+1

Для обратной совместимости: http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html. Если это только одно поле, используйте отражение. – fadden

ответ

1

Верификатор не сильно изменился между 1,5 и 1,6, поэтому он должен быть одинаково счастлив или недоволен каждым. (Вкл.> = 2.0, он будет бросать NoSuchFieldError в том месте, где сначала используется поле, а не для отклонения всего класса.)

Проблема заключается в том, что поле Build.MANUFACTURER не было в Android 1.5 ("Кекс"). Я считаю, что он был введен в 1.6 («пончик»).

+0

спасибо, что я проверил документацию, и вы правы, она не поддерживалась на 1,5 , но я должен найти способ сделать ее обратной совместимостью – TiGer

Смежные вопросы