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

Это вопрос из двух частей о добавлении сторонней библиотеки (JAR) в проект Android в Eclipse.

Первая часть вопроса: когда я пытаюсь добавить стороннюю JAR (библиотеку) в свой Android-проект, я сначала получаю проблему

Анализ ошибок XML: несвязанный префикс

потому что я пытаюсь использовать класс из этого JAR (и нужно, чтобы префикс каким-то образом был определен). Что происходит?

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

Вызвано: java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView...

Почему, когда у меня нет компиляции или ошибки компоновщика в Eclipse, возникает ли у этой проблемы проблема с эмулятором?

Эти два вопроса риторические, потому что я собираюсь ответить на них сам ниже. Другие сообщения в этом форуме ползут к проблеме, и в другом месте есть дискуссия, но я чувствую, что могу быть более явным образом полезной для следующего парня, чтобы прийти.

Ответ 1

Теперь для проблемы с отсутствующим классом.

Я разработчик Eclipse Java EE и привык много лет добавлять сторонние библиотеки через механизм "Библиотека пользователей" в пути сборки. Конечно, есть по крайней мере 3 способа добавить стороннюю библиотеку, тот, который я использую, является самым элегантным, по моему скромному мнению.

Тем не менее, это не будет работать для Android, у которого Dalvik "JVM" не может обрабатывать обычный Java-скомпилированный класс, но должен преобразовать его в специальный формат. Этого не происходит, когда вы добавляете библиотеку так, как я обычно это делаю.

Вместо этого следуйте (широко доступным) инструкциям по импорту сторонней библиотеки, а затем добавьте ее с помощью пути сборки (что делает его известным для Eclipse для целей компиляции). Вот шаг за шагом:

  • Загрузите библиотеку на хост системы разработки.
  • Создайте новую папку, libs, в ваш проект Eclipse/Android.
  • Щелкните правой кнопкой мыши libs и выберите Импорт → Общие → Файловая система, затем "Далее", "Обзор" в файловой системе найти родительскую библиотеку справочник (т.е.: где вы скачал его).
  • Нажмите "ОК", затем нажмите имя каталога (не флажок) в левой панели, затем проверьте соответствующий JAR в правой панели. Эта помещает библиотеку в ваш проект (Физически).
  • Щелкните правой кнопкой мыши на своем проекте, выберите "Путь сборки" → "Настроить сборку" Путь, затем перейдите на вкладку "Библиотеки", затем Добавить JARs..., перейдите к своему новый JAR в каталоге libs и добавьте его. (Это, кстати, момент, когда ваш новый JAR конвертируется для использования на Android.)

Примечание

Шаг 5 может не понадобиться, если lib уже включен в ваш путь сборки. Просто убедитесь, что его существование прежде, чем добавить его.

То, что вы сделали здесь, выполняет две вещи:

  • Включает преобразованную Dalvik JAR в вашем проекте Android.
  • Использует определения Java к Eclipse, чтобы найти сторонних классов при разработке (то есть компиляции) ваш исходный код проекта.

Ответ 2

Убедитесь, что ваши сторонние банки находятся в папке "libs" ваших проектов, и они будут помещены в .apk при упаковке вашего приложения. Вы можете увидеть ошибки времени выполнения на устройстве, если что-то в банке не поддерживается, но кроме этого я имел большой успех с этим.

Ответ 3

Настройка проекта библиотеки

Проект библиотеки является стандартным проектом Android, поэтому вы можете создать новый так же, как и новый проект приложения.

Когда вы создаете проект библиотеки, вы можете выбрать любое имя приложения, пакет и при необходимости установить другие поля, как показано на рисунке 1.

Затем установите свойства проекта, чтобы указать, что это проект библиотеки:

В Проводнике пакетов щелкните правой кнопкой мыши проект библиотеки и выберите "Свойства" . В окне "Свойства" выберите группу свойств "Android" слева и найдите свойства библиотеки справа. Установите флажок "Библиотека" и нажмите "Применить". Нажмите "ОК", чтобы закрыть окно "Свойства" . Новый проект теперь отмечен как проект библиотеки. Вы можете начать перемещать в него исходный код и ресурсы, как описано в следующих разделах.

Ответ 4

Если вы используете версию 22 ADT, вам нужно проверить зависимости android и частные библиотеки android на вкладке "Экспорт" на пути сборки проекта

Ответ 5

Во-первых, проблема недостающего префикса.

Если вы потребляете что-то в своем файле макета, который поступает от третьего лица, вам может понадобиться также использовать его префикс, что-то вроде "droidfu:", которое встречается в нескольких местах в XML-конструкции ниже:

<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
          android:layout_width="75dip"
          android:layout_height="75dip"
          android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

Это выходит из JAR, но вам также нужно добавить новый "xmlns: droidfu"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

или вы получите ошибку несвязанного префикса. Для меня это не удалось скопировать и вставить весь предоставленный пример со сторонних страниц библиотеки.

Ответ 6

Анализ ошибок XML: несвязанный префикс

Ресурс '/playteddy/res' не существует.

Я получил две вышеперечисленные ошибки и, наконец, решил.

Щелкните правой кнопкой мыши свой проект → свойства → путь сборки java → googleadmobadsdk (выберите и поместите его вверху), затем вы запустите и устраните проблему. Решена моя ошибка времени выполнения.

Ответ 7

Поместите источник в папку вне рабочей области. Щелкните правой кнопкой мыши в проекте-проводнике и выберите "Импорт..."

Импортируйте проект в рабочее пространство в качестве проекта Android. Постарайтесь создать его и убедитесь, что он отмечен как проект библиотеки. Также убедитесь, что он создан с поддержкой API Google, если вы не получите ошибки компиляции.

Затем щелкните правой кнопкой мыши ваш основной проект в проводнике проекта. Выберите свойства, затем выберите Android слева. В разделе библиотеки ниже нажмите "Добавить".

Теперь вам будет доступна библиотека mapview-balloons для добавления в ваш проект.

Ответ 8

Перейдите к пути сборки в eclipse, затем щелкните заказ и экспортируйте, затем проверьте библиотеку /jar, а затем нажмите кнопку "вверх", чтобы перенести его в начало списка, чтобы скомпилировать его в первую очередь.