Подтвердить что ты не робот

Преобразование в формат Dalvik не удалось с ошибкой 1 в Android на экспорт (adt 21)

Я знаю, что форма этого вопроса есть, но я не могу найти ничего конкретного, что соответствует моему сценарию, так что вот оно.

Мое приложение компилируется и отлично работает при тестировании в эмуляторе, но когда я пытаюсь экспортировать подписанный apk, я получаю Conversion to Dalvik format failed with error 1. Журнал ошибок Eclipse показывает эту трассировку стека:

com.android.ide.eclipse.adt.internal.build.DexException: Conversion to Dalvik format failed with error 1
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:751)
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:269)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:296)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:233)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:218)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

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

Я тоже не использую ProGuard.

4b9b3361

Ответ 1

Похоже, что ADT 21 добавляет папку в ваш bin, называемый dexedLibs, который должен ускорить развертывание, помещая банки и библиотеки в предварительно скомпилированный код dex. У меня было две версии библиотеки поддержки, поэтому я удалил все файлы в папке и снова построил, и это сработало. Если я пытаюсь построить с любыми файлами там, сборка не удалась, поэтому я должен удалить их перед каждым экспортом. Я использую ActionBar Sherlock, и это может противоречить предмету dexedLibs, потому что он не появится там, если папка изначально пуста.

Изменить: я использовал ActionBarSherlock, когда эта проблема возникла впервые, но недавно переключилась на ActionBarCompat. Начиная с этого переключателя, я больше не должен удалять папку dexedLibs при экспорте. Похоже, возможно, ActionBarSherlock виноват, но я не могу быть уверен.

Ответ 2

Перейдите в проект и отмените выбор Build Automatically. Затем очистите проект и создайте все. Работала для меня, чтобы экспортировать подписанный пакет приложений

Ответ 3

После многих попыток мне удалось выяснить причину возникновения этой проблемы. В общем, это вызвано ProGuard и, в частности, его оптимизацией. По крайней мере, в моем случае у меня было 4 поврежденных проекта с этой ошибкой, но после того, как я отключил оптимизацию ProGuard, все они были построены правильно. Итак, в вашем комментарии к конфигурации ProGuard: -оптимизации и -optimizationpasses options и add -dontoptimize

# -optimizations ...
# -optimizationpasses 5

-dontoptimize

Надеюсь, что это поможет.