Сторонняя библиотека добавляется в каталог dexedLib, но в библиотеке нет class.dex

Для дополнительной функции в моем приложении для Android я загрузил код с открытым исходным кодом для какой-то сторонней библиотеки. Это было сделано для настройки.

Я использую Eclipse Juno.

Я создал проект из исходного кода, сделал настройку, собрал JAR. И я использую библиотеку JAR в своем проекте. Код в моем приложении вызывает соответствующие функции библиотеки на определенном экране.

Приложение компилируется нормально :)

Однако, когда я запускаю свое приложение и перехожу к экрану, где я использую классы библиотеки, я встречаю ClassNotFoundException для класса библиотеки.

Я провел дальнейшую диагностику и заметил, что все файлы классов Java преобразуются в DEX виртуальной машиной Dalvik.

Все сторонние библиотеки помещаются в каталог dexedLib под bin, где обычный сторонний JAR включает каталог META-INF и файл class.dex. Но JAR, который я добавил, включал только каталог META-INF, а НЕ class.dex. Отсюда и Исключение.

Я не наблюдал никаких журналов, в которых Dalvik VM сообщает о сбое преобразования.

Я несколько раз очищал проект, загружал/перезагружал проекты в Eclipse, но безрезультатно.

Также сослался на сообщение ниже, в котором говорится о той же проблеме, но для него сработала очистка проекта от Eclipse и повторная загрузка. библиотека dexed для Android пуста

Любая помощь будет оценена по достоинству.


person Mukesh Bhojwani    schedule 29.07.2015    source источник


Ответы (2)


поскольку вы используете Eclipse, возможно, проблема связана со способом создания сборки:

перейти к свойствам проекта | Путь сборки Java | Заказ и экспорт

проверьте еще раз, что ваша банка есть в списке (вероятно, уже там). если да, установите флажок рядом с ним, чтобы банка была экспортирована при создании apk.

Наслаждайтесь... PS. Я предлагаю вам перейти на Android Studio или IntelliJ (отец студии Android). ADT для Eclipse устарел и больше не поддерживается.

person danysz    schedule 29.07.2015
comment
Библиотека уже есть в разделе Заказ и Экспорт, и галочка уже стоит. Но, все еще не работает. - person Mukesh Bhojwani; 29.07.2015
comment
Да, он отлично работает в Android Studio! все же стоит знать, почему он не работает конкретно с моей библиотекой в ​​Eclipse. В любом случае, я думаю, что теперь я могу сосредоточиться на темах исследования моего проекта, а не на окружающей среде. Спасибо :) - person Mukesh Bhojwani; 29.07.2015
comment
наслаждайтесь и удачи. если вы действительно заинтересованы, вы можете очистить всю среду, а также рабочее пространство и попробовать еще раз. Также для следующего шага нужно перенести исходники в другой новый проект и посмотреть, работает ли он, но поскольку Google объявляет об окончании срока службы eclipse, вы правы и двигаетесь вперед... Кстати, было бы неплохо принять мой ответ. Спасибо - person danysz; 30.07.2015

Я просто столкнулся с той же проблемой, включив XZing в свое приложение. Для версии 3.2.1 eclipse не создавал class.dex, но для более старой версии 2.3.0. Я считаю, что это связано с тем, что в более новой версии используется синтаксис java 1.8, который не поддерживается старым Android SDK.

person Knuspy    schedule 02.04.2020