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

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

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

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

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

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

Вызывается: java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView...

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

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

8 ответов

Решение

Теперь о проблеме недостающего класса.

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

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

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

  1. Загрузите библиотеку в свою систему разработки хоста.
  2. Создайте новую папку libs в своем проекте Eclipse/Android.
  3. Щелкните правой кнопкой мыши libs и выберите Import -> General -> File System, затем Next, Browse в файловой системе, чтобы найти родительский каталог библиотеки (то есть, куда вы ее загрузили).
  4. Нажмите OK, затем щелкните имя каталога (не флажок) на левой панели, затем проверьте соответствующий JAR на правой панели. Это помещает библиотеку в ваш проект (физически).
  5. Щелкните правой кнопкой мыши свой проект, выберите Build Path -> Configure Build Path, затем перейдите на вкладку Libraries, затем Add JARs..., перейдите к новому JAR в каталоге libs и добавьте его. (Это, кстати, тот момент, когда ваш новый JAR конвертируется для использования на Android.)

НОТА

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

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

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

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

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

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

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

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

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

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

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

Если вы используете в своем файле макета что-то от стороннего производителя, возможно, вам также понадобится использовать его префикс, например, "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"
      ...>

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

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

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

Я получил две вышеупомянутые ошибки и наконец решил.

Щелкните правой кнопкой мыши свой проект -> Свойства -> Путь сборки Java -> googleadmobadsdk (выберите и поместите его сверху), затем запустите и проблема будет решена. Это решено моей ошибкой во время выполнения.

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

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

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

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

Библиотека mapview-balloonons теперь должна быть доступна для добавления в ваш проект.

Другие вопросы по тегам