Android: преобразование в формат Dalvik не выполнено: невозможно выполнить dex: null - PullRequest
33 голосов
/ 22 апреля 2010

Я пытаюсь использовать SmugFig SmugMug API на Android. Он был разработан для J2SE, и я не уверен, что он будет работать даже на Android, но я подумал, что стоит попробовать, а не пытаться создать собственный API.

Когда я загружаю проект, я получаю следующую ошибку:

Conversion to Dalvik format failed: Unable to execute dex: null

В нем не указано, на каком пакете произошел сбой, просто «Проблема с упаковкой Android», но он этого не делал до того, как я добавил SmugFig и его JARS-зависимости в путь сборки.

Куда мне смотреть? Или это в основном я, что он просто не будет работать с этими библиотеками?

Ответы [ 14 ]

41 голосов
/ 05 мая 2010

Я нашел запись в блоге, которая говорит об увеличении памяти, выделенной в eclipse.ini, так: -Xms128m -Xmx512m или что-то более высокое, но это не для меня.

Однако я нашел еще один пост, в котором предлагалось сделать «Проект> Чистый», и он исправил это для меня. Я думаю, что это происходит, когда вы выключаете Eclipse, не выключая эмулятор первым. Довольно хромая ошибка. Потратил несколько часов на поиски раствора этим утром ... grrrrrrr: - (

16 голосов
/ 26 февраля 2013

Зайдите в Проект »Свойства» Путь сборки Java »Библиотеки и удалите все, кроме« Android X.Y »(в моем случае Android 1.5). нажмите ОК Перейдите в Проект »Очистить» Очистить проекты, выбранные ниже »выберите свой проект и нажмите ОК. Это должно работать.

Также возможно, что у вас есть файл JAR, расположенный где-то в папках вашего проекта (я скопировал файл JAR Admob в мою папку src), и ТОГДА добавил его как библиотеку путей Java. Он не отображается в проводнике пакетов, поэтому вы его не замечаете, но он учитывается дважды, что вызывает страшную ошибку Dalvik 1.

Другой возможной причиной могут быть конфликты имен пакетов. Предположим, у вас есть пакет com.abc.xyz и класс с именем A.java внутри этого пакета, а также другой библиотечный проект (который добавляется в зависимость этого проекта), который содержит тот же com.abc.xyz.A.java тогда вы получите точно такую ​​же ошибку. Это означает, что у вас есть несколько ссылок на один и тот же файл A.java и вы не можете его правильно построить.

6 голосов
/ 07 декабря 2010

После выхода Eclipse DDMS 8.0.0 с выпуском Android 2.3 эта ошибка внезапно появилась.

Ни одно из приведенных выше предложений не помогло, но оказалось, что корень проблемы был в ссылочном проекте.(несколько классов разделены между сервером и клиентом).

Как только я удалил ссылку на проект, собрал и включил флягу проекта, на который ссылались когда-то, проблема перестала существовать.

Похожечто-то пошло не так в DDMS 8.0.0 с ссылочными проектами.

5 голосов
/ 05 сентября 2011

Что мне помогло, так это удаление ссылки на android.jar в

Настройка пути сборки -> Путь сборки Java -> Библиотеки

Оставьте ссылку на библиотеку Android 3.0.

4 голосов
/ 29 июня 2011

это просто из-за размера кучи, занимаемой некоторыми JAR-файлами ... которую можно удалить вручную ...

В противном случае лучше всего изменить файл Eclipse.ini в папке eclipse .....

добавьте -Xmx1024m к файлу, чтобы размер памяти составил 1 ГБ ... он наверняка будет работать .....

3 голосов
/ 18 апреля 2013

Шаги, которые помогают мне устранить эту ошибку

  1. удалить пользовательские библиотеки (внешние библиотеки).
  2. очистить проект
  3. снова добавить внешнюю библиотеку
  4. построить проект
  5. запустить проект.

Надеюсь, это будет вам полезно. Спасибо.

2 голосов
/ 29 апреля 2013
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-XX:MaxPermSize=512m
-vmargs
-Xms512m
-Xmx1024m

у меня работает https://groups.google.com/forum/?fromgroups=#!topic/phonegap/yWePvssyiLE

2 голосов
/ 07 декабря 2010

http://groups.google.com/group/android-developers/browse_thread/thread/3911749addce534d

Они работают над исправлением для 2.3

.

Редактировать: это было исправлено в версии 2.3, получите обновление через eclipse.

1 голос
/ 07 сентября 2012

Только это решит мою проблему. Проект> Очистить

1 голос
/ 10 декабря 2010

Убедитесь, что вы не ссылаетесь на один и тот же проект в банке и затмении.Например, у вас есть проект myproject в eclipse.Ваш Android-проект ссылается как на проект myproject, так и на созданный из него jar-файл.Это приведет к ошибке при попытке выполнить dex при попытке dex против созданных классов из myproject и myproject.jar

...