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