Jar, на который ссылается проект библиотеки Android, на который не ссылается приложение. ноклассдеффаундеррор

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

Как описано в некоторых из этих вопросов, у меня есть библиотека Java (скажем, J), включенная в библиотеку Android (AL), которая включена в приложение Android (AA). Я добавил библиотеку в библиотеки обоих (также пытался добавить ее только к AA и включить в AL, и наоборот, и только в AL, и ожидал, что зависимости от Android позаботятся об этом), но это или что-то еще не сделал работай.

Я использую последние инструменты (версия 20.0.3). Версия сборки Android для библиотеки Android и приложения — 2.2, а минимальный SDK — 5.

Я вижу библиотеку java в зависимостях приложения для Android, но получаю NoClassDefFoundException и время выполнения.

Как я могу заставить это работать?

Библиотека Android должна ссылаться на банку, поскольку она содержит некоторую логику шифрования, которую мне нужно скрыть. Библиотека создается для распространения, приложение просто что-то совсем простое для тестирования библиотеки.


person kapad    schedule 10.10.2012    source источник
comment
Где вы размещаете библиотеку Android (AL) в своем приложении Android (AA)? Например, где в файловой системе вашего проекта он находится?   -  person AWT    schedule 10.10.2012
comment
Кроме того, являются ли ошибки NoClassDefFound только для вашей java-библиотеки J? Можно ли использовать в AL другие функции, не зависящие от J?   -  person AWT    schedule 10.10.2012
comment
да. Только для функций/классов в java-библиотеке J. Все они представляют собой разные папки в одном корневом каталоге. Все они также используют одно и то же рабочее пространство. Путем проб и ошибок нашел решение. Это работает сейчас.   -  person kapad    schedule 11.10.2012


Ответы (1)


Было 2 разные, но связанные проблемы, вызывающие эту проблему.

  1. Библиотека Java J была скомпилирована с уровнем соответствия 1.7 (по умолчанию для моей системы). Это должно быть 1.5, уровень соответствия Android. (уровень соответствия может измениться в будущем).
  2. Библиотека J также компилировалась с использованием библиотеки J2SE. Мне пришлось заменить его на anroid.jar того же уровня API, что и мое приложение.

Тогда тоже ничего не работало, и по какой-то причине оно начало работать после того, как я удалил проект и воссоздал его в новых каталогах (IMP: сначала сделайте резервную копию кода).

person kapad    schedule 11.10.2012