Добавление JAR в папку /libs проекта Android

Вопросов по этому поводу масса, но ни один не дает четкого решения этой проблемы (неужели это так сложно?)

Я пытаюсь добавить банку в свой проект Android. Начиная с r17, Google говорит, что мы должны добавить банки в папку /libs, а инструменты andriod позаботятся обо всем остальном.

Я включил очень большую библиотеку, и она работает хорошо, за исключением одного класса, поэтому я решил попробовать создать свою собственную банку.

Я создал новый проект Java и добавил простой класс Test. Затем я экспортировал его как банку и вручную скопировал банку в папку /libs. Я без проблем очистил и пересобрал свое приложение для Android, но во время выполнения, ссылаясь на класс Test, я получаю следующие ошибки:

java.lang.NoClassDefFoundError: mytestpackage.Test

Когда я включаю источник jar напрямую в свой проект, он работает (конечно).

Так что я делаю неправильно?


person Twinone    schedule 14.05.2013    source источник


Ответы (3)


Начиная с r17, Google говорит, что мы должны добавить банки в папку /libs, а инструменты andriod позаботятся обо всем остальном.

Правильный.

Так что я делаю неправильно?

Если бы мне пришлось угадывать, помимо копирования JAR в libs/, вы также сделали «Добавить в путь сборки» в Eclipse (согласно другому ответу). Мало того, что это не обязательно, но отчеты показывают, что это каким-то образом подавляет фактическую упаковку JAR из libs/ в APK. Если вы действительно это сделали, отмените изменение пути сборки вручную и посмотрите, поможет ли это.

person CommonsWare    schedule 14.05.2013

Что ж, после борьбы с этим в течение дня я обнаружил, что в проекте библиотеки у меня установлен уровень компиляции 1.7, поэтому, когда я экспортировал jar, он был экспортирован с более высоким уровнем компиляции, чем поддерживает Android (1.6) .

Итак решение, в проекте jar для экспорта: Properties -> Java Compiler -> Enable specific settings -> Compiler compilance level -> 1.6

Это исправило это для меня, я надеюсь, что это полезно.

person Twinone    schedule 16.05.2013

Вам нужно обновить свой .classpath. В Eclipse отметьте библиотеку (вставьте /libs) и Right click->Build Path->Add to build path

person mach    schedule 14.05.2013