Как я могу использовать внешние JAR-файлы в проекте Android?

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

Похоже, Order and Export игнорируется, и все классы из внешнего JAR отсутствуют во время выполнения.

Есть ли хитрость, чтобы правильно включить необходимые классы из внешнего JAR при создании приложения для Android с помощью плагина Eclipse? Я не хочу использовать муравья или мавена.

12 ответов

Для затмения

Хороший способ добавить внешние JAR-файлы в ваш проект Android или любой проект Java:

  1. Создайте папку с именем libs в корневой папке вашего проекта
  2. Скопируйте ваши файлы JAR в libs папка
  3. Теперь щелкните правой кнопкой мыши файл Jar и выберите "Путь сборки"> "Добавить в путь сборки ", и в вашем проекте будет создана папка "Библиотеки со ссылками".

    Делая это, вы не потеряете библиотеки, на которые есть ссылки на вашем жестком диске, при переносе проекта на другой компьютер.

Для Android Studio

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

  1. Щелкните правой кнопкой мыши нужный модуль, в который вы хотите добавить внешнюю библиотеку, затем выберите " Создать"> "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 Dependency Mangement

Да, вы можете использовать это. Вот как:

  1. Ваш проект -> щелкните правой кнопкой мыши -> Импорт -> Файловая система -> yourjar.jar
  2. Ваш проект -> щелкните правой кнопкой мыши -> Свойства -> Путь сборки Java -> Библиотеки -> Добавить Jar -> yourjar.jar

Это видео может быть полезно в случае возникновения проблем.

Я знаю, что ОП заканчивает свой вопрос ссылкой на плагин Eclipse, но я прибыл сюда с поиском, который не указал Eclipse. Итак, что касается Android Studio:

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

Это оно!

В настоящее время я использую SDK 20.0.3, и ни одно из предыдущих решений не помогло мне.

Причина того, что hessdroid работает там, где произошел сбой hess, заключается в том, что два jar-файла содержат java, скомпилированный для разных виртуальных машин. Байт-код, созданный компилятором Java, не гарантированно работает на виртуальной машине Dalvik. Байт-код, созданный компилятором Android, не обязательно будет работать на виртуальной машине Java.

В моем случае я имел доступ к исходному коду и смог создать для него файл jar для Android, используя метод, который я описал здесь: /questions/13302930/noclassdeffounderror-dlya-koda-v-biblioteke-java-na-android/13302976#13302976

Оказывается, я не выглядел достаточно хорошо на трассировке стека, проблема не в том, что внешний JAR не включен.

Проблема в том, что на платформе Android отсутствует javax.naming. * И многие другие пакеты, которые также имеют зависимости от внешнего JAR.

Добавление внешних файлов JAR и настройка порядка и экспорта в Eclipse работает, как и ожидалось, в проектах Android.

Перейти к текущему проекту

RightClick->Properties->Java Build Path->Add Jar Files в библиотеки -> Нажмите OK

Затем он добавляется в файл ссылочных библиотек в вашем текущем проекте.

Если вы используете систему сборки Gradle, выполните следующие действия:

  1. положил jar файлы внутри соответствующих libs папка вашего приложения для Android. Как правило, вы найдете его на Project > app > libs, Если libs папка отсутствует, создайте ее.

  2. добавить это к вашему build.gradle подать свой app, (Не для вашего Project "s build.gradle)

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

    Это будет включать в себя все ваши jar файлы доступны в libs папка.

Если не хотите включать все jar файлы, то вы можете добавить его по отдельности.

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

Java API Android не поддерживает javax.naming.* И многие другие javax.* Вещи. Вы должны включить зависимости как отдельные банки.

Если вы используете Android Studio, сделайте следующее (я скопировал и изменил ответ @Vinayak Bs):

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

В андроид студии при использовании gradle

добавить это в build.gradle

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

и добавьте файл jar в папку libs

Копирование файла.jar в папку проекта Android не всегда возможно.
Особенно, если это выход другого проекта в вашей рабочей области, и он постоянно обновляется.

Чтобы решить эту проблему, вам нужно будет добавить jar как связанный файл в ваш проект, вместо того, чтобы импортировать его (который скопирует его локально).

В интерфейсе выберите:

Проект -> Импорт -> Файловая система -> 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.

создайте папку (например, lib) внутри вашего проекта, скопируйте свой jar в эту папку. Теперь перейдите к настройке пути сборки правой кнопкой мыши на проекте, там в пути сборки выберите

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

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