Як я можу використовувати зовнішні JAR в проекті Android?


326

Я створив проект Android і додав до свого проекту зовнішній JAR (hessian-4.0.1.jar). Потім я додав JAR до шляху збірки і перевірив його в порядку замовлення та експорту.

Порядок та експорт ігнорується, здається, і всі класи із зовнішнього JAR відсутні під час виконання.

Чи є хитрість правильно включити потрібні класи із зовнішнього JAR під час створення програми для Android за допомогою плагіна Eclipse? Я не хочу використовувати мурашник або Мейвен.


1
як ви вже з’ясували: це спричинено залежностями в гессіан-4.0.1.jar. Якщо ви хочете використовувати Гессіана з Android, використовуйте Hessdroid ( code.google.com/p/hessdroid ). Не дуже активний, але добре працює для мене навіть на Android 4.0.
Ice09

1
Дивіться також "NoClassDefFoundError для коду в бібліотеці Java на Android" для поширеної проблеми під час використання зовнішніх банок. Просте рішення .
Потік

Відповіді:


443

За затемнення

Хороший спосіб додати зовнішні JAR до свого проекту Android або будь-якого проекту Java:

  1. Створіть папку, яку називаютьlibs у кореневій папці вашого проекту
  2. Скопіюйте свої файли JAR у libsпапку
  3. Тепер клацніть правою кнопкою миші на файл Jar, а потім виберіть Збірка контуру> Додати до шляху побудови , який створить папку під назвою "Посилання на бібліотеки" у вашому проекті

    Роблячи це, ви не втратите своїх бібліотек , на які посилається ваш жорсткий диск, коли ви переносите проект на інший комп'ютер.

Для Android Studio

  1. Якщо ви перебуваєте в Android View в провіднику проектів, змініть його на перегляд проекту, як показано нижче

Відсутнє зображення

  1. Клацніть правою кнопкою миші потрібний модуль, куди ви хочете додати зовнішню бібліотеку, а потім виберіть команду New> Directroy та назвіть її як " libs "
  2. Тепер скопіюйте blah_blah.jar у папку " libs "
  3. Клацніть правою кнопкою миші blah_blah.jar, а потім виберіть " Додати як бібліотеку .. ". Це автоматично додасть і запише в build.gradle як файли компіляції ('libs / blah_blah.jar') і синхронізує gradle. І ви закінчили

Зверніть увагу: Якщо ви використовуєте сторонні бібліотеки, тоді краще використовувати перехідні залежності, коли сценарій Gradle автоматично завантажує JAR та JAR залежності при запуску скрипта gradle.

Наприклад: компілювати "com.google.android.gms: play-services-ads: 9.4.0"

Детальніше про управління залежностями Gradle


49
Зауважте, що при використанні останніх версій Eclipse / ADT зовнішні банки повинні знаходитись у папці під назвою libs(замість lib)
THelper

4
@ THelper - Дякую! Ви маєте рацію, папка повинна бути названа "libs", а не "lib". Я стукав головою над цією проблемою.
Каміль Севіньй

7
В останніх версіях SDK крок 3 (додавання JAR вручну до контуру збирання) є непотрібним. Але якщо у вас буде IDE, наприклад Eclipse, відкритий під час завантаження файлу, вам доведеться виконати оновлення проекту (F5 та / або контекстне меню Refresh у Package Explorer).
Джон Адамс

4
Як це робиться з командного рядка? Який файл конфігурації потрібно редагувати та як?
Крістіан Шпангеж

13
Цей підхід застарів із початку 2012 року. Просто додайте JAR до libs/. Не змінюйте вручну шлях збирання.
CommonsWare

127

Так, ви можете ним скористатися. Ось як:

  1. Ваш проект -> клацніть правою кнопкою миші -> імпорт -> файлова система -> yourjar.jar
  2. Ваш проект -> клацніть правою кнопкою миші -> Властивості -> Шлях збірки Java -> Бібліотеки -> Додати Jar -> yourjar.jar

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


5
Цей підхід застарів із початку 2012 року. Просто додайте JAR до ліб /. Не змінюйте вручну шлях збирання.
CommonsWare

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

ПЕРШЕ рішення є застарілим і звичайно не працює.
Yousha Aleayoub

5

Зараз я використовую SDK 20.0.3, і жодне з попередніх рішень не працювало на мене.

Причина того, що hessdroid працює там, де hess не вдалося, полягає в тому, що два файли jar містять Java, який компілюється для різних віртуальних машин. Байтовий код, створений компілятором Java, не гарантовано працює на віртуальній машині Dalvik. Байтовий код, створений компілятором Android, не гарантовано працює на віртуальній машині Java.

У моєму випадку я мав доступ до вихідного коду і зміг створити для нього jar jar-файл за допомогою методу, який я описав тут: https://stackoverflow.com/a/13144382/545064


5

Я знаю, що ОП закінчує його питання посиланням на плагін Eclipse, але я приїхав сюди з пошуком, який не вказав Eclipse. Отож, це стосується Android Studio:

  1. Додати jarфайл у каталог libs (наприклад, скопіювати / вставити)
  2. Клацніть правою кнопкою миші на jarфайл та виберіть "Додати як бібліотеку ..."
  3. натисніть "Ок" у наступному діалоговому вікні або перейменуйте, якщо захочете.

Це воно!


4

Виявляється, я недостатньо добре подивився на свій слід стека, проблема не в тому, що зовнішній JAR не включений.

Проблема полягає в тому, що на платформі Android відсутня javax.naming. * Та багато інших пакетів, від яких зовнішній JAR також має залежність.

Додавання зовнішніх файлів JAR, а також налаштування замовлення та експорту в Eclipse працює, як очікується, для проектів Android.


3

Поточний проект Goto

Клацніть правою кнопкою миші-> Властивості-> Шлях збірки Java-> Додати файли Jar у бібліотеки -> Натисніть кнопку ОК

Потім він додається у файл згаданих бібліотек у вашому поточному проекті.


1

API Java для Android не підтримує javax.naming. * Та багато інших javax. * Речей. Залежно потрібно включати залежності як окремі банки.


1

Якщо ви користуєтесь Android Studio, зробіть наступне (я скопіював та змінив відповідь @Vinayak Bs):

  1. Виберіть перегляд проекту у бічному перегляді проекту (замість пакунків чи Android)
  2. Створіть папку під назвою libs у кореневій папці вашого проекту
  3. Скопіюйте свої файли JAR у папку libs
  4. Вид збоку буде оновлено, і у вашому проекті з'являться файли JAR
  5. Тепер клацніть правою кнопкою миші на кожному файлі JAR, який ви хочете імпортувати, а потім виберіть "Додати як бібліотеку ...", який включить його у ваш проект
  6. Після цього все, що вам потрібно зробити, - це посилання на нові класи у вашому коді, наприклад. import javax.mail.*

1

в андроїд-студії, якщо ви використовуєте gradle

додайте це до build.gradle

compile fileTree(dir: 'libs', include: ['*.jar'])

і додайте файл jar в папку libs


1

Якщо ви використовуєте систему збирання gradle , виконайте наступні дії:

  1. помістити jarфайли у відповідну libsпапку програми для Android. Ви, як правило , знайти його в Project> app> libs. Якщо libsпапки відсутня, створіть її.

  2. додайте це у свій build.gradleфайл app. (Не з вашими Projectх build.gradle)

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    Сюди будуть включені всі ваші jarфайли, доступні в libsпапці.

Якщо ви не хочете включати всі jarфайли, ви можете додати їх окремо.

compile fileTree(dir: 'libs', include: 'file.jar')


0

створіть папку (наприклад, lib) всередині свого проекту, скопіюйте свою банку в цю папку . Тепер перейдіть до налаштування шляху збирання з клацання правою кнопкою миші на проекті, там виберіть шлях збірки

"Додати банку", перейдіть до створеної вами папки та виберіть банку.


0

Копіювати .jar файл у папку проекту Android не завжди можливо.
Особливо, якщо це результат іншого проекту у вашій робочій області, і він постійно оновлюється.

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

У інтерфейсі виберіть:

Проект -> Імпорт -> Файлова система -> yourjar.jar -> (область параметрів) Додатково -> Створити посилання в робочій області.

Посилання зберігається у файлі .project :

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC означає відносно файлу проекту 5 нагорі каталогів (../../../../../).

Потім додайте його до бібліотек:
Проект -> Властивості -> Шлях збірки Java -> Бібліотеки -> Додати Jar -> yourjar.jar

У цьому ж вікні виберіть вкладку « Замовлення та експорт » і позначте свою банку, щоб вона була додана до apk.

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