Android Studio: добавить банку в качестве библиотеки?

947

Я пытаюсь использовать новую Android Studio, но не могу заставить ее работать правильно.

Я использую библиотеку Gson для сериализации/десериализации JSON-объектов. Но библиотека как-то не включена в сборку.

Я создал новый проект только с MainActivity. Скопировал gson-2.2.3.jar в папку /libs и добавил его в качестве зависимости библиотеки (справа click-> Добавить как библиотеку). Это включает в себя jar в Android Studio, так что на него можно ссылаться из исходных файлов.

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

compile files('libs/gson-2.2.3.jar')

к зависимостям в файле de.gradle. После этого он компилируется правильно, но при запуске приложения я получаю ClassDefNotFoundException.

Кто-нибудь знает, что я делаю не так?

  • 0
    См. Stackoverflow.com/a/6859020/28557
  • 1
    Хотя это не решает проблему, просто хочу отметить, что «компиляция» не рекомендуется в пользу «реализации».
Теги:
android-studio
gradle
gson
dependency-management

34 ответа

1486
Лучший ответ

Я боролся с одним и тем же в течение многих часов, пытаясь заставить банку Гсона работать не меньше. Я наконец взломал это - вот шаги, которые я сделал:

  1. Поместите банку Gson (в моем случае gson-2.2.4.jar) в папку libs
  2. Щелкните правой кнопкой мыши и выберите "Добавить как библиотеку".
  3. Убедитесь, что compile files('libs/gson-2.2.4.jar') находятся в вашем файле build.gradle (или compile fileTree(dir: 'libs', include: '*.jar') если вы используете много jar файлов. )

    Редактировать: использовать implementation files('libs/gson-2.2.4.jar') (или implementation fileTree(dir: 'libs', include: '*.jar')) в Android Studio 3. 0+

  4. Выполните чистую сборку (вы, вероятно, можете сделать это нормально в Android Studio, но чтобы убедиться, что я перешел в терминал к корневой папке моего приложения и набрал gradlew clean. Я работаю в Mac OS X, команда может отличаться на ваша система

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

[Правка - добавлен шаг build.gradle который также необходим, как указали другие]

  • 3
    Ты мой герой! Запустил gradlew.bat в обеих папках моего проекта с файлом build.gradle, и это сработало!
  • 0
    Рад, что разобрался. Я только что попытался добавить еще один jar, и у меня возникла та же проблема - мне определенно нужны compile files в build.gradle и их нужно очистить с помощью gradlew . Rebuild Project из Android Studio, кажется, не делает чистку должным образом.
Показать ещё 18 комментариев
263

Вот инструкции по добавлению локального файла jar в виде библиотеки в модуль:

  • Создайте папку "libs" на верхнем уровне каталога модуля (тот же каталог, который содержит каталог "src" )

    Изображение 2851

  • В build.gradle file добавьте следующее, чтобы ваше закрытие зависимостей:

    dependencies {
        // ... other dependencies
        compile files('libs/<your jar name here>')
    }
    
  • Android Studio должна уже установить оболочку gradlew. В командной строке перейдите на верхний уровень вашего проекта (каталог с файлом gradlew).

    Запустите ./gradlew assemble. Это должно скомпилировать проект с библиотекой. Возможно, вам потребуется исправить ошибки в файле build.gradle по мере необходимости.

  • Чтобы Android Studio распознала локальные файлы jar в качестве библиотек для поддержки при кодировании в среде IDE, вам нужно сделать еще несколько шагов:

    4,1. Щелкните правой кнопкой мыши на модуле в левой панели и выберите Open Library Settings.

    Изображение 2852

    4,2. В левой панели диалогового окна выберите Libraries.

    4,3. Нажмите знак + над второй панелью слева → Java

    Изображение 2853

    4,4. Выберите свою локальную банку и добавьте ее в проект.

  • Возможно, вам понадобится выполнить вышеуказанную команду ./gradlew еще раз

  • 0
    Это сработало для меня. У меня есть Android Studio версии 1.2 Build 141.1890965, на Ubuntu. Почему вы говорите "с Android Studio 2.5"? Это другая версия для Windows / Mac? (1a) Найти это было сложно. Поле со списком находится вверху слева от области структуры проекта. Нужно выбрать «Проект» в отличие от «Android» и развернуть «Приложение». (1b) Опция «добавить» не появилась, но «Вставить» сработало. (2) У меня была строка "compile fileTree (dir: 'libs', include: ['* .jar'])", но мне все равно пришлось добавить явную единственную строку. (4, 5) не требуется, если (3) выполнено успешно. Спасибо!
  • 0
    "левая панель"? Вы имеете в виду панель проекта? Может быть где угодно ... В Android Studio 2.3.3 я не могу найти настройки библиотеки, но добавление jar к зависимостям в настройках модуля выглядит одинаково ...
Показать ещё 1 комментарий
102

В проекте щелкните правой кнопкой мыши

-> new -> module
-> import jar/AAR package
-> import select the jar file to import
-> click ok -> done

Следуйте приведенным ниже скриншотам:

1

Изображение 2854

2:

Изображение 2855

3:

Изображение 2856

Вы увидите следующее:

Изображение 2857

  • 0
    @CamConnor я тоже так думаю .. Другие ответы устарели
  • 0
    Это ответ
Показать ещё 4 комментария
44

В Android Stuido мне нравится использовать Gradle для управления Gson lib.

Добавьте зависимость ниже в файле build.gradle.

repositories {mavenCentral()}

dependencies {compile 'com.google.code.gson:gson:2.2.4'}

Все в порядке.

Вы также можете увидеть этот пост. Лучший способ интеграции сторонней библиотеки в студию Android

  • 3
    это правильный путь с использованием центрального репо.
  • 0
    Этот метод является лучшим, потому что он использует Maven.
Показать ещё 1 комментарий
44

IIRC, просто использовать "Добавить как библиотеку" недостаточно для его компиляции с проектом.

Отметьте Intellij help о добавлении библиотек в проект

Наиболее интересная вам часть:

File > Project Structure) Откройте настройки модуля и выберите вкладку "Зависимости".

На вкладке "Зависимости" нажмите "Добавить" и выберите "Библиотека".

В диалоговом окне "Выбор библиотек" выберите одну или несколько библиотек и нажмите "Добавить выбранные".

Если библиотека не отображается в диалоговом окне, добавьте ее в настройки "Библиотеки", прямо под Модулями.

Вам больше не нужно добавлять compile files(), и библиотека должна быть правильно добавлена ​​в ваш проект.

  • 0
    Добавить в библиотеку уже добавить банку таким же образом. Поэтому я думаю, что результат тот же. Я попробую это позже.
  • 0
    Добавление в библиотеку делает это успешно - я в той же лодке, что и ты, Оззи - ТОЧНО та же проблема.
Показать ещё 2 комментария
39

Все эти решения устарели. Это действительно легко в Android Studio:

Файл > Новый модуль...

Следующий экран выглядит странно, например, вы выбираете какой-то виджет или что-то еще, но держите его на первом снимке и ниже прокрутки и найдите "Импорт JAR или .AAR Package"

Затем возьмите Project Structure из меню "Файл". В открывшемся окне выберите app, затем выберите dependencies, затем нажмите green plus button, выберите module dependency, затем выберите модуль, который вы импортировали, затем нажмите OK

  • 0
    Я думаю, что использование maven все равно будет лучшим решением, особенно для крупномасштабных проектов, то есть от saneryee.
  • 2
    Даже это, кажется, устарело. Просто поместите ваш файл .jar в вашу директорию "libs", и он автоматически будет скомпилирован в ваш проект. В Android Studio 1.4 уже есть настройка правил по умолчанию, включающая все файлы * .jar из каталога "libs".
34

Простые шаги для добавления внешней библиотеки в Android Studio

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

Изображение 2858

  1. Щелкните правой кнопкой мыши нужный модуль, где вы хотите добавить внешнюю библиотеку, затем выберите "Создать" > "Directroy" и назовите его как 'LIBS'
  2. Теперь скопируйте blah_blah.jar в папку 'libs'
  3. Щелкните правой кнопкой мыши blah_blah.jar, затем выберите "Добавить в библиотеку". Это автоматически добавит и добавит в build.gradle как компиляцию файлы ('libs/blah_blah.jar') и синхронизировать gradle. И вы закончили.

Обратите внимание: Если вы используете сторонние библиотеки, тогда лучше использовать зависимости, где Gradle scriptавтоматически загружает JAR и JAR зависимости, когда gradle script выполнить.

Ex: compile 'com.google.android.gms: play-services-ads: 9.4.0'

Подробнее о Gradle Масштабирование зависимостей

32

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

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

Я понятия не имею, почему это имело значение, но, по крайней мере, проклятая вещь сейчас работает.

  • 1
    Это работает для меня, однако недавно обнаружил, что иногда AS не берет новые / обновленные банки, пока вы не выполните синхронизацию gradle.
  • 0
    Просто помните, что «компиляция» устарела в пользу «реализации».
16
  • Загрузите файл библиотеки с веб-сайта
  • Копирование из окна поиска
  • Вставить в папку lib из Project Explorer
  • Ctrl + Alt + Shift + S открыть структуру проекта
  • Выберите вкладку "Зависимости", добавьте файл, используя +
  • Панель инструментов Синхронизировать проект с файлом gradle с помощью кнопки

Это решило мою проблему. Попробуйте, если кто-нибудь захочет получить более подробную информацию, дайте мне знать.

15

Я сделал это, просто добавив одну строку в build.gradle:

 dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar']) ----> AS creates this
    implementation 'com.google.code.gson:gson:2.3.1'   ----------> I added this one
    }

Не забудьте нажать "Синхронизировать сейчас" в правом верхнем углу.

Я использую Android Studio 1.0.1.

  • 0
    Не могли бы вы уточнить, что fileTree строка fileTree ?
12

Я нашел Dependency Manager для Android Studio достаточно удобным и мощным для управления зависимостями сторонних разработчиков (например, упоминаемый здесь gson). Предоставление пошагового руководства, которое работало для меня (ПРИМЕЧАНИЕ. Эти шаги протестированы для Android Studio 1.6 и последующих версий на платформе Windows).

Шаг 1: Goto "Build > Edit Libraries and Dependencies..." откроет диалог "Структура проекта"

Изображение 2859

Шаг 2: Выберите "приложение", а затем выберите вкладку "Зависимости". Затем выберите "Добавить > 1 зависимость библиотеки"

Изображение 2860

Шаг 3: Будет показан диалог "Выбор библиотеки", укажите "gson" в поиске и нажмите "кнопка поиска"

Изображение 2861

Шаг 4: Желаемая зависимость будет отображаться в списке поиска, выберите com.google.code.gson: gson: 2.7 (это последняя версия в то время, когда я написал ответ), нажмите OK

Изображение 2862

Нажмите ОК в диалоговом окне "Структура проекта". Gradle будет соответствующим образом обновлять ваши скрипты сборки.

Изображение 2863

Надеюсь, это поможет:)

  • 0
    Я нашел некоторые проблемы с этим подходом, работал над приложением, которое использует commons-io-2.5. При загрузке приложения в Google Developer Console оно показывает 0 устройств, поддерживаемых для подписанного apk. После исчерпывающего исследования я понял, что мне нужно поместить файл jar в app / libs / commons-io-2.5.jar и обновить зависимости в gralde, например, это 'compile files (' libs / commons-io-2.5.jar ') ', не уверен, что я делал здесь неправильно и почему документация не покрывает это.
  • 0
    Вот как это работает. Все остальные ответы не сработали. Android Studio 2.3.3
9

1. Поместите банку (в моем случае, gson-2.2.4.jar) в папку libs.

2. Убедитесь, что файлы компиляции (libs/gson-2.2.4.jar) находятся в файле build.gradle.

3. Теперь нажмите "Проект синхронизации с Gradle файлами" (слева на кнопку менеджера AVD на верхней панели).

После того, как я сделал три выше, он начал нормально работать.

8

Загрузите и скопируйте ваш файл .jar в папку libs затем добавьте следующие строки в build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.google.code.gson:gson:2.3.1'
}

Не забудьте нажать "Синхронизировать сейчас"

6

Я сделал выше 3 шага и его работа очарование для меня.

(Я использую Android Studio 2.1.2)

Изображение 2864

Шаг 1

  • Добавьте имя вашего jar-пакета (как пример compile 'com.squareup.okhttp3:okhttp:3.3.1') в скрипт сборки gradle в build.gradle (Модуль: приложение).

Изображение 2865

Шаг 2: Щелкните правой кнопкой мыши папку приложения -> Создать → Модуль

Изображение 2866

Шаг 3: Нажмите Импорт пакета JAR/.AAR, затем просмотрите пакет. как пример: OkHttp.jar

Изображение 2867

6

В отличие от Eclipse нам не нужно скачивать jar и помещать его в папку /libs. Gradle обрабатывает эти вещи, нам нужно только добавить зависимости Gradle, Gradle загружает их и помещает в кэш Gradle.

Нам нужно добавить зависимости как:

зависимости {реализация 'com.google.code.gson: gson: 2.2.4'}

Вот и все. Однако мы также можем скачать jar и добавить его в виде библиотеки, но лучше всего добавлять зависимости Gradle.

5

С Android Studio 3+:

Вы должны просто иметь возможность просто скопировать файл jar в папку libs прямо в папке приложения.

... myproject\app\libs\myfile.jar

Затем выберите Project Files из выпадающего списка в окне Projects, щелкните правой кнопкой мыши по проекту, выберите Synchronize, чтобы увидеть файл в Project Files. Он автоматически добавит зависимости в файл Gradle (Модуль: приложение).

dependencies {
...
    implementation files('libs/myfile.jar')

Вот еще одно решение:

Перейдите в представление "Файлы проекта" (выберите "Файлы проекта" в раскрывающемся списке).

Изображение 2870

Выберите New... Directory, создайте папку с именем libs прямо под приложением.

Изображение 2871

Откройте File Explorer, скопируйте и вставьте файл JAR в папку libs.

В Android Studio щелкните правой кнопкой мыши файл JAR и выберите "Добавить как библиотеку..." во всплывающем меню.

Изображение 2872

Вы должны увидеть файл, указанный в списке зависимостей в файле Gradle:

dependencies {
...
    implementation files('libs/myfile.jar')
}

Откройте свой Java файл и добавьте туда инструкцию import:

import com.xxx.xxx;
5

Поместите файлы .jar в папку libs проекта Android.

Затем добавьте эту строку кода в файл приложения gradle:

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

Для плагина Android gradle 3.0 и более поздних версий лучше использовать это:

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

Вы можете сделать это с двумя вариантами.

Первый простой способ.

Скопируйте файл.jar в буфер обмена и добавьте его в папку libs. Чтобы увидеть папку libs в проекте, выберите проект из выпадающего списка над папками.

затем щелкните правой кнопкой мыши на файле.jar и выберите "Добавить как библиотеку", затем выберите модуль и нажмите "ОК". Вы можете увидеть файл.jar в файле build.gradle в блоке зависимостей.

 dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:21.0.3'
        implementation project(':okhttp-2.0.0')
        implementation 'com.google.code.gson:gson:2.3.1'
    }

Второй способ: мы можем добавить файл.jar в модуль, импортировав этот файл.jar как модуль.jar, а затем добавить этот модуль в любой модуль, который нам нужен.

модуль импорта ---> выберите файл.jar → чем импортировать как.jar - Изображение 2868

Затем нажмите сочетание клавиш CTRL + ALT + SHIFT + S → структура проекта → выберите нужный модуль, чтобы добавить банку → Зависимости → Зависимость модуля. build.gradle модуля будет обновляться автоматически. Изображение 2869

  • 0
    Ницца. одно редактирование - теперь это «Новый модуль» (Android Studio 1.0.1). «Модуль импорта» отправляет вас к другому мастеру.
4
menu File -> project struct -> module select "app" -> dependencies tab -> + button 
-> File dependency -> PATH/myfile.jar
3

Я прочитал все ответы здесь, и все они, похоже, охватывают старые версии Android Studio!

С проектом, созданным с помощью Android Studio 2.2.3, мне просто нужно было создать каталог libs в app и разместить там свою банку. Я сделал это с моим файловым менеджером, не нужно нажимать или редактировать что-либо в Android Studio.

Почему это работает? Откройте Build/Edit Libraries и Dependencies, и вы увидите:

{include=[*.jar], dir=libs}
3

Шаг 1. Теперь под вашим app folder вы увидите libs, если вы его не видите, , затем создайте его. > .

Шаг 2: Drag & Drop the .jar file here, вы можете получить приглашение "This file does not belong to the project", просто нажмите кнопку OK.. p >

Шаг 3. Теперь вы должны увидеть файл jar в папке libs, щелкните правой кнопкой мыши файл jar и выберите "Add as library", Click OK for prompt "Create Library"

Шаг 4. Теперь добавлена ​​ jar.

Изображение 2873

3

В android Studio 1.1.0. Я решил этот вопрос, выполнив следующие шаги:

1: Поместите файл jar в каталог libs. (в Finder)

2: Откройте настройки модуля, перейдите в "Зависимости", в левом нижнем углу появится кнопка "плюс". Нажмите кнопку плюс, затем выберите "Зависимость файла". Здесь вы можете увидеть файл jar. Выберите его, и он разрешился.

3

1) создайте папку "your_libs" внутри папки Project/app/src.

2) Скопируйте файл jar в эту папку "your_libs"

3) В Android Studio перейдите в меню Файл → Структура проекта → Зависимости → Добавить → Зависимость файла и перейдите к файлу jar, который должен находиться под "src/your_libs"

3) Выберите файл jar и нажмите "Ok"

а затем вы можете увидеть на своем build.gradle вот так: компилировать файлы ( 'SRC/your_libs/your.jar')

3

Создайте папку libs. Добавьте файл .jar. Щелкните правой кнопкой мыши по нему, и вы найдете добавить jar в качестве зависимости. Нажмите здесь. Это все, что вам нужно сделать. Вы можете найти зависимости, добавленные в ваш файл build.gradle.

3

В Mac OS X:

  • Добавить jar как библиотеку (перетащите jar в libs, щелкните правой кнопкой мыши добавить как lib)

  • Добавить компиляцию в build.grade

  • Установите gradle v1.6 (используйте доморощенный)

    • brew установить gradle
    • gradle -v
    • если не v1.6, обновите homebrew
  • gradle clean (rebuild android не работает)

Это меня разобрало.

2

В Android Studio 2.1 я следую так,

Перейти в приложение → src-> main → папка assets (если недоступно, создайте его) → поместите ваши JAR файлы

Изображение 2874

В вашем build.gradle добавьте такую зависимость,

implementation files('src/main/assets/jsoup.jar')
implementation files('src/main/assets/org-apache-xmlrpc.jar')
implementation files('src/main/assets/org.apache.commons.httpclient.jar')
implementation files('src/main/assets/ws-commons-util-1.0.2.jar')

Синхронизировать сейчас. Теперь ваши JAR файлы готовы к использованию.

  • 0
    Почему вы не используете каталог libs?
  • 0
    @ErdeniErdyneev Я даю другой подход для хранения файлов JAR. почему я не пользуюсь активами? какие-либо проблемы в моем подходе? Я готов исправить ошибки, если я не прав
2
  1. Добавлена папка libs на уровне app.
  2. Добавлены все jars в этом проекте.
  3. Затем выберите все банки в папке libs,
  4. щелкните правой кнопкой мыши на выбранных элементах и скажите add library
  5. тогда вы найдете опцию расширения jars в самом проводнике проекта.

Я заметил, что CTRL + ALT + SHIFT + S → структура проекта → app-module → Dependencies "уже имеют запись в виде (dir: 'libs', include: '*.jar') в compile-option, первоначально. И после добавления jar в соответствии с шагами, указанными выше, build.gradle получил записи для нового добавленного jar's.

2

Как и многие предыдущие, вы добавите

compile files('libs/gson-2.2.3.jar') 

в файл build.gradle.

Однако у меня есть проект в Android Studio, который был перенесен из Eclipse, и в этом случае папка "libs" называется "lib", поэтому для меня удаление "s" решило проблему.

1

Для более новой версии Android 1.0.2 в вашем файле build.gradle уже есть следующее

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

Добавьте jar библиотеки в папку libs → щелкните правой кнопкой мыши библиотеку → нажмите кнопку Добавить как библиотеку → она попросит вас добавить проект → выберите ваш project-> нажмите кнопку ОК Следующая строка автоматически добавляется в build.gradle

implementation files('libs/android-query.jar')

Это сделало это для меня. больше ничего не требовалось. Я показал это для Android Aquery еще одну стороннюю библиотеку для Android.

1

Мой ответ в основном собирает некоторые из правильных, но неполных ответов, приведенных выше.

  • Открыть build.gradle
  • Добавьте следующее:

    dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.3'
    }
    

    Это позволит поддерживать два разных способа добавления зависимостей. compile fileTree(dir: 'libs', include: ['*.jar']) (как упоминалось в @Binod) сообщает компилятору посмотреть под папкой libs для ЛЮБОЙ банки. Хорошей практикой является создание такой папки "libs", которая будет содержать пакеты jar, которые необходимо использовать нашему приложению.

Но это также позволит поддерживать зависимость Maven. Компиляция 'com.google.code.gson:gson:2.3' (как упоминалось в @saneryee) - это еще один рекомендуемый способ добавления зависимостей, которые находятся в центральном удаленном репозитории, а не в нашем /libs "локальном репозитории". В основном говоря gradle искать эту версию этого пакета, и он говорит компилятору рассмотреть его при компиляции проекта (имея его в пути к классам)

PS: Я использую оба

1

compile fileTree(dir: 'libs', include: '*.jar') работает отлично, но не compile files(...) проверили с помощью Studio Beta 0.8.1

0

Я не знаю, почему, но моя Android Studio 0.8.14 сходит с ума, когда я пытаюсь реализовать эти решения, используя Gradle. Я признаю свое плохое знание этого великолепного инструмента построения, но для чего студия искажает мой проект? Мне удалось заставить его работать следующим образом: поместите android-support-v13.jar в каталог "libs", затем F4 в моем проекте и добавьте зависимость файла, где я указал android-support-v13.jar.

0

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

Не нужно было ничего настраивать вручную! Я просто добавил недостающие библиотеки и использовал конфигурацию зависимостей по умолчанию в файле app build.gradle, как этот

dependencies {
    compile 'com.google.code.gson:gson:2.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
0

Сделайте это:

Создайте папку libs в папке приложения. Добавьте файлы .jar в папку libs. Затем добавьте файлы .jar в приложение build.gradle. Наконец, проект Sync с файлами Gradle.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню