Добавление библиотеки / JAR в проект Eclipse Android - PullRequest
129 голосов
/ 04 сентября 2010

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

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

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

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

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

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

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

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

Ответы [ 8 ]

315 голосов
/ 04 сентября 2010

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

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

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

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

  1. Загрузите библиотеку на свой хост система разработки.
  2. Создать новую папку, libs , в ваш проект Eclipse / Android.
  3. Щелкните правой кнопкой мыши libs и выберите Импорт -> Общие -> Файловая система, затем Далее, просмотрите в файловой системе найти родителя библиотеки каталог (т.е. где вы скачал в).
  4. Нажмите ОК, затем нажмите имя каталога (не флажок) в на левой панели, затем проверьте соответствующий JAR в правой панели. это помещает библиотеку в ваш проект (Физически).
  5. Щелкните правой кнопкой мыши по вашему проекту, выберите Путь сборки -> Настроить сборку Путь, затем нажмите вкладку Библиотеки, затем добавьте JAR-файлы ..., перейдите к новый JAR в каталоге libs и добавь это. (Это, кстати, тот момент, когда ваш новый JAR конвертируется для использования на Android.)

Примечание

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

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

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

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

5 голосов
/ 20 июня 2011

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

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

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

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

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

4 голосов
/ 24 июля 2013

Если вы используете ADT версии 22, вам нужно проверить зависимости Android и частные библиотеки Android на вкладке «Порядок и экспорт» в пути сборки проекта

2 голосов
/ 04 сентября 2010

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

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

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

1 голос
/ 02 апреля 2012

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

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

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

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

0 голосов
/ 26 июня 2013

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

0 голосов
/ 05 декабря 2012

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

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

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

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

...