Несколько файлов dex - Превращение в формат Dalvik не удалось - Не удалось выполнить dex
У меня есть 2 версии приложения - pro и lite. Они оба уже на рынке в v1.01. Я пытаюсь выпустить v1.1 для обоих. Это обновление включает интеграцию SwawrmConnect для использования своих глобальных лидеров.
Я должен начать, сказав, что знаю, что я не поддерживаю свой код правильно. У меня есть 2 совершенно разных приложения, которые, вероятно, содержат 90% кода. Я поддерживаю их отдельно, потому что через неделю или 2 или 3 из-за неспособности выяснить, как сделать библиотеку и поделиться кодом, я сдался и просто пошел с этим.
SwarmConnect - это первый барабан, который я использовал и должен был сделать библиотеку для двух приложений (см. скриншот структуры файла ниже).
Сейчас моя облегченная версия работает и готова к выпуску. Теперь я пытаюсь получить мою версию pro там, где она должна быть выпущена. Я уверен, что все файлы java/xml обновлены и готовы. Когда я пошел запускать версию pro в эмуляторе, я получаю следующую ошибку:
[2013-04-18 11:24:41 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/swarmconnect/loopj/android/http/AsyncHttpResponseHandler;
[2013-04-18 11:24:41 - BibleTriviaPro] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/swarmconnect/loopj/android/http/AsyncHttpResponseHandler;
Вещи, которые я пробовал:
- Clean/восстановление
- Обновить Eclipse
- Удалить папки bin и gen
- Перезапуск Eclipse
- Плюс некоторые другие вещи
Моя файловая структура:
![enter image description here]()
Может быть проблема в том, что я пытаюсь использовать SwarmConnect в качестве библиотеки для двух проектов (lite и pro)?
EDIT:
Ниже приведена файловая структура для облегченной версии, которая работает отлично. Компилирует и запускает эмулятор.
![enter image description here]()
Ответы
Ответ 1
По совпадению я столкнулся с тем же вопросом позавчера. Вот что я предлагаю вам сделать.
Прежде всего убедитесь, что у вас есть резервная копия всех банок, находящихся в настоящее время в папке "Зависимости от Android" / "libs".
Теперь, сначала исправьте версию lite, выполнив следующие шаги.
-
Удалите все jar
файлы, кроме android-support-v4.jar
из папки "Android Dependencies" в Project Explorer в Eclipse.
-
Аналогично удалите все файлы Jar, кроме android-support-v4.jar
, из папки libs
в Project Explorer в Eclipse.
-
Теперь щелкните правой кнопкой мыши на своем проекте- > Выберите "Свойства" → "Выбрать путь сборки Java" → "Добавить добавление внешних JAR". Добавьте все необходимые файлы jar
(просто убедитесь, что вы добавили конкретный файл jar
только один раз).
Наконец, очистите проект и постройте его. Теперь примените ту же последовательность шагов к pro-версии.
Это должно сделать это.
UPDATE: - Если вы видите, как Eclipse делает компиляцию о некоторых ошибках времени компиляции, после выполнения всего этого вам может потребоваться просто исправить эти ошибки времени компиляции, выполнив необходимые импорт, нажав Ctrl + Shift + O.
[Я предполагаю, что нет никакой связи между pro и lite версиями проекта с точки зрения исходных зависимостей и т.д., что я имею в виду, в основном они абсолютно независимы.]
Надеюсь, что это поможет.
Ответ 2
Я сильно подозреваю, что это ваша проблема.
- Щелкните правой кнопкой мыши свой проект
- Посмотрите под опцией "Android".
- В нижней панели посмотрите, присутствует ли "Swarm Connect"
- Если нет, добавьте его (хотя я действительно подозреваю, что он уже есть)
- Удалить Swarm.jar из каталога libs
причина: когда вы добавляете проект библиотеки в проект Android в Eclipse, он не отображается в вашем каталоге libs. Я на самом деле пытался добавить только файл .jar в проект, и мне сказали, что это неправильный подход (по крайней мере, до API 14, я думаю).
Моя догадка заключается в том, что в вашей версии "non-pro" вы не связывали ее в параметрах проекта и, следовательно, все еще правильно компилировались. Тем не менее, вы должны связать его так, как я описал, чтобы избежать проблем, когда библиотека пытается получить доступ к своим собственным ресурсам.
Ответ 3
Вышеупомянутое решение не работало для меня. Все, что мне нужно было сделать, это добавить банки в папку libs извне и отключить частные библиотеки Android под вкладкой "Заказ и экспорт".
right click--
java build path--
order and export tab ->Uncheck Android private libraries
and add jars in the libs folder externally.
выполните указанные выше действия. Не знаю, почему это происходит.
Ответ 4
Я попробовал ответить @Sriram выше. Это не сработало.
Затем мне пришлось удалить библиотеки из Project- > Properties- > Java Build Path- > Libraries и добавить фактический jar (мне нужны были android-support-v4.jar и android-support-v13.jar) в папку libs моего проекта. Затем он работал:
![final structure]()
(обратите внимание, что нет папки "Связанные библиотеки" )
Ответ 5
Я получил эту ошибку, потому что использовал весь инсталлятор Android Development Kit (Eclipse plus SDK, датированный 2/6/2013). Единственный способ избавиться от него - удалить все это и отдельно установить Eclipse для разработчиков Java с eclipse.org и Android SDK только с сайта Android. В Eclipse, который поставляется вместе с комплектом, есть некоторые смешные идеи о том, куда включать библиотеки, не говоря уже о рудиментарных кусках поддержки С++ и gdb.