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


130

Це двоскладове запитання щодо додавання сторонньої бібліотеки (JAR) до проекту Android в Eclipse.

Перша частина питання полягає в тому, що коли я намагаюся додати сторонній JAR (бібліотеку) до свого проекту Android, я спочатку отримую проблему

Помилка розбору XML: незв’язаний префікс

тому що я намагаюся використовувати клас із цього JAR (і потрібен префікс якось визначений). Що відбувається?

По-друге, (після виправлення цього - відповідь наведено нижче), моя програма не працює на Android, і я виявляю за допомогою налагоджувача (LogCat), що клас, який я намагаюся споживати, не існує.

Викликано: java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView ...

Чому, коли в Eclipse у мене не виникає компіляція чи помилка зв’язку, у неї є така проблема на емуляторі?

Ці два питання є риторичними, тому що я на них сам відповім нижче. Інші публікації на цьому форумі підкрадаються до проблеми, і в інших місцях обговорюються, але я відчуваю, що я можу бути кориснішою для наступного хлопця.

Відповіді:


316

Тепер про проблему з відсутнім класом.

Я розробник Eclipse Java EE і маю звичку багато років додавати сторонні бібліотеки через механізм "Бібліотека користувачів" в Build Path. Звичайно, є щонайменше 3 способи додати сторонні бібліотеки, той, який я використовую, є найелегантнішим, на мою скромну думку.

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

Натомість виконайте (широко доступні) інструкції щодо імпорту сторонніх бібліотек, а потім додайте їх за допомогою Build Path (що дає змогу Eclipse знати для цілей компіляції). Ось покрокове:

  1. Завантажте бібліотеку у вашу систему розробки хостів.
  2. Створіть нову папку, libs , у своєму проекті Eclipse / Android.
  3. Клацніть правою кнопкою миші LIBS і виберіть Import -> Загальні -> File System, потім Далі Перегляд в файлової системі , щоб знайти батьківський каталог бібліотеки (тобто .: де ви завантажили його).
  4. Клацніть OK, потім клацніть ім'я каталогу (не прапорець) на лівій панелі, а потім позначте відповідну JAR на правій панелі. Це ставить бібліотеку у ваш проект (фізично).
  5. Клацніть правою кнопкою миші на вашому проекті, оберіть Шлях збірки -> Налаштування контуру збірки, потім перейдіть на вкладку Бібліотеки, а потім Додати JARs ..., перейдіть до нового JAR у каталозі libs та додайте його. (Це, до речі, момент, коли ваш новий JAR перетворений для використання на Android.)

ПРИМІТКА

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

Що ви тут зробили, це дві речі:

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

Руссе, ти, мабуть, повинен почати ще одне окреме питання. Ця відповідь виглядає дивним чином.
Пол Грегуар

3
Отже, я трохи переписав частини запитання. Я протистояв спокусі зробити просту справу (що ви тут пропонуєте), тому що я дійсно думаю, що обидві проблеми виникають із спроби додати сторонні бібліотеки, і я роблю загрозу, що кожен, у кого є друга проблема, мабуть, мав би перший теж. Дякую.
Русс Бейтман

Я хотів би, щоб у цьому були щось більш чітке в офіційних документах для Android (ще не натрапили на нього) та інші відповіді на інших форумах підходять, але ніколи не помічаючи проблеми. Зауважте, що на BlackBerry ця сама проблема є величезним кошмаром, коли ніхто не надає достовірної інформації, як її вирішити - не впевнений, що я там буду робити.
Russ Bateman

2
Привіт @RussBateman Я випробував кроки, про які ви згадали вище, і успішно міг включити банку з бібліотекою в мій проект Android, і тому бібліотечні класи були доступні для мого проекту під час компіляції. Але коли я запускаю проект, я отримую помилку на моїй консолі: "Не вдалося перейти у формат Дальвік з помилкою 1" .. і мій проект не буде запущений!
Зеба

За певних відокремлених мереж це не працює ... Я не пам'ятаю точно, що я робив, видалив папку libs, перечитав її ... тепер зробив усе, що ви сказали, додайте libs, імпортуйте банку, додайте до шляху складання .. . помилок компілятора більше немає, але все ж отримують виняток виконання, що клас не знайдений :(
Ixx,

20

Переконайтесь, що ваші сторонні банки є у папці "libs" ваших проектів, і вони будуть розміщені у .apk під час упаковки вашої заявки. Ви можете побачити помилки під час виконання на пристрої, якщо щось в банку не підтримується, але крім цього я мав великий успіх у цьому.


1
Це все щодо досвіду, у мене було те саме питання і раніше :)
Пол Грегуар

Дякую, сер, але це гасно, що папка Libs потребує копії зовнішніх файлів Jar, які ми вже маємо в сховищі Maven або десь.
асгс

1
На жаль, це більше не працює автоматично, ви також повинні сказати eclipse, щоб включити бібліотеки в файли пакунків.
Ніл Таунсенд

Коли це змінилося? Це величезна зміна того, до чого ми звикли.
Пол Грегуар

5

Створення бібліотечного проекту

Проект бібліотеки - це стандартний проект для Android, тому ви можете створити новий таким же чином, як і новий проект програми.

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

Далі встановіть властивості проекту, щоб вказати, що це проект бібліотеки:

У Провіднику пакунків клацніть правою кнопкою миші проект бібліотеки та виберіть Властивості. У вікні "Властивості" виберіть групу властивостей "Android" зліва та знайдіть властивості бібліотеки праворуч. Установіть прапорець "є бібліотека" та натисніть Застосувати. Клацніть OK, щоб закрити вікно властивостей. Новий проект тепер позначений як бібліотечний проект. Ви можете розпочати переміщення вихідного коду та ресурсів до нього, як описано в розділах нижче.


4

Якщо ви використовуєте ADT версії 22, вам потрібно перевірити андроїдні залежності та андроїд-приватні бібліотеки на вкладці "Порядок та експорт" на шляху створення проекту


2

По-перше, проблема відсутнього префікса.

Якщо ви використовуєте щось у вашому файлі макета, що надходить від третьої сторони, може знадобитися і його префікс, якийсь на зразок "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

Помилка розбору XML: незв’язаний префікс

Ресурс "/ playteddy / res" не існує.

Я отримав вищевказані дві помилки і нарешті вирішив її.

Клацніть правою кнопкою миші ваш проект -> властивості -> шлях збірки Java -> googleadmobadsdk (виберіть і поставте його вгорі), після чого запустіть і вирішіть проблему. Це вирішена моя помилка виконання.


0

Помістіть джерело в папку за межами робочої області. Клацніть правою кнопкою миші в досліднику проектів і виберіть "Імпортувати ..."

Імпортуйте проект у робочу область як проект Android. Спробуйте побудувати його та переконайтесь, що він позначений як проект бібліотеки. Також переконайтеся, що вона створена за допомогою підтримки Google API, якщо ні, ви отримаєте помилки компіляції.

Потім клацніть правою кнопкою миші ваш основний проект у програмі провідника. Виберіть властивості, а потім виберіть Android зліва. У розділі бібліотеки нижче натисніть "Додати" ..

Тепер бібліотека балів з переглядом карт повинна бути доступна для додавання до вашого проекту.


0

Перейдіть до побудови шляху у затемненні, потім натисніть порядок та експорт, потім перевірте бібліотеку / банку, а потім натисніть кнопку вгору, щоб перемістити її до початку списку, щоб скомпілювати її спочатку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.