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


1027

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

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

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

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

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

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

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



1
Хотя это не решает проблему, просто хочу отметить, что «компиляция» не рекомендуется в пользу «реализации».
Амир Резазаде

Ответы:


1536

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

  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шаг, который также необходим, как указали другие]


6
Чистый gradlew помог мне тоже. Большое спасибо!
Франтишек Жячик

172
Если вы не хотите явно добавлять строку для каждого файла JAR: compile fileTree(dir: 'libs', include: '*.jar')
J c

65
Я бы порекомендовал воспользоваться преимуществами временного управления зависимостями gradle и загрузить gson из mavenCentral () (если требуется подключение к Интернету. Просто добавьте repositories { mavenCentral() }и замените свою compile files(...)строку на, compile 'com.google.code.gson:gson:2.2.4'и gradle автоматически загрузит файл jar и будет управлять вами. Это позволяет SCM отслеживать только файлы исходного кода, а не библиотеки
Joe

38
Я не получаю опцию Добавить как библиотеку в шаге 2.
Yster

6
В Android Studio 1.0.2 шаги 2 и 3 не нужны, поскольку эта строка уже используется по умолчанию build.gradle: compile fileTree (dir: 'libs', include: ['* .jar'])
Брайан Марик,

268

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

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

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

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

    Беги ./gradlew assemble. Это должно скомпилировать проект с библиотекой. При необходимости вам может потребоваться исправить ошибки в файле build.gradle.

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

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

    4.2. На левой панели диалогового окна выберите Libraries.

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

    Меню

    4.4. Выберите свой местный кувшин и добавьте его в проект.

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


Это сработало для меня. У меня есть 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) выполнено успешно. Спасибо!
Фил Фрайхофнер

"левая панель"? Вы имеете в виду панель проекта? Может быть где угодно ... В Android Studio 2.3.3 я не могу найти настройки библиотеки, но добавление jar к зависимостям в настройках модуля кажется одинаковым ...
Невероятное

для Mac, если у вас нет gradle: $ brew install gradle, если вы получаете «./gradlew: разрешение запрещено», вам нужно запустить $ chmod 755 gradlew. Затем вы можете запустить $ ./gradlew сборки
Azkario Rizky

110

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

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

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

1:

Шаг 1

2:

введите описание изображения здесь

3:

введите описание изображения здесь

Вы увидите это:

введите описание изображения здесь


@CamConnor Я тоже так думаю .. Другие ответы устарели
Ганеш Пандей,

Это ответ
Алессандро

4
Но это не признается библиотекарем. Например, редактор andriod studio: попробуйте импортировать пакет в импортированную флягу, не распознанную.
Дейв

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

Почему я должен использовать этот метод добавления внешнего jar, а не другие ответы метода «copy-jar-to-libs»?
Eido95

48

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

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

repositories {mavenCentral()}

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

Все хорошо.

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


Этот метод является лучшим, потому что он использует Maven.
Гэри Дрочелла

1
Только не забудьте обновить номер версии до последней :) На данный момент это 2.3.1, но проверьте ссылку
Kitalda

47

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

Проверьте справку Intellij о добавлении библиотек в проект

Часть, которая должна вас заинтересовать, это:

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

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

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

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

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


Добавить в библиотеку уже добавить банку таким же образом. Поэтому я думаю, что результат тот же. Я попробую это позже.
Оззи

Добавление в библиотеку делает это успешно - я в той же лодке, что и ты, Оззи - ТОЧНО та же проблема.
Иона Х.

Хорошо, я думал, что Добавить как библиотеку только добавил ее в список библиотек и не добавил ее в зависимости от модуля.
Jukurrpa

Когда я попробовал это, я обнаружил, что он добавляет строки compile files () в мой файл build.gradle, но, похоже, он использует абсолютные пути к библиотекам (/libs/foo.jar). Я изменяю их на относительные пути (libs / foo.jar), что решило проблему для меня.
Мэтт Холгейт

40

Все эти решения устарели. В Android Studio теперь очень просто:

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

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

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


Я думаю, что использование maven все равно будет лучшим решением, особенно для крупномасштабных проектов, то есть от saneryee.
Гэри Дрочелла

2
Даже это, кажется, устарело. Просто поместите ваш файл .jar в каталог «libs», и он автоматически будет скомпилирован в ваш проект. В Android Studio 1.4 уже есть настройка правил по умолчанию, включающая все файлы * .jar из каталога «libs».
Даниэле Теста

35

Простые шаги для добавления внешней библиотеки в 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


34

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

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

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


1
Это работает для меня, однако недавно обнаружил, что иногда AS не получает новые / обновленные банки, пока вы не выполните синхронизацию gradle.
Скоттиаб

Просто помните, что «компиляция» устарела в пользу «реализации».
Амир Резазаде

17
  1. Скачать файл библиотеки с сайта
  2. Копировать из окна исследовать
  3. Вставить в папку lib из Project Explorer
  4. Ctrl+ Alt+ Shift+S открыть структуру проекта
  5. Выберите вкладку Зависимости, добавьте файл с помощью +
  6. Панель инструментов Синхронизируйте проект с файлом Gradle с помощью кнопки

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


17

Я сделал это, просто добавив одну строку 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
}

Не забудьте нажать Sync now в правом верхнем углу.

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


Не могли бы вы уточнить, что fileTreeделает эта линия?
Thufir

13

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

Шаг 1: Перейдите к «Построить> Редактировать библиотеки и зависимости ...», откроется диалоговое окно «Структура проекта».

введите описание изображения здесь

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

введите описание изображения здесь

Шаг 3: Откроется диалоговое окно «Выберите библиотечную зависимость», укажите «gson» в поиске и нажмите «кнопку поиска»

введите описание изображения здесь

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

введите описание изображения здесь

Нажмите ОК в диалоговом окне «Структура проекта». Gradle обновит ваши скрипты сборки соответственно.

введите описание изображения здесь

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


Я нашел некоторые проблемы с этим подходом, работал над приложением, которое использует 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 ') ', не уверен, что я делал здесь неправильно и почему документация не покрывает это.
AB

Вот как это работает. Все остальные ответы не сработали. Android Studio 2.3.3
imsrgadich

11

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

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

3. Теперь нажмите «Синхронизировать проект с файлами Gradle» (кнопка слева от диспетчера AVD на верхней панели).

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


9

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

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

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


9

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

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

Скопируйте файл .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 - введите описание изображения здесь

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


Ницца. одно редактирование - теперь это «Новый модуль» (Android Studio 1.0.1). «Модуль импорта» отправляет вас к другому мастеру ..
Авив Бен Шабат

7

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

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

введите описание изображения здесь

Шаг 1

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь


7

С Android Studio 3+:

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

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

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

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

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

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

введите описание изображения здесь

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

введите описание изображения здесь

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

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

введите описание изображения здесь

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

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

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

import com.xxx.xxx;

7

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

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

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

Для Android Gradle плагин 3.0 и выше, лучше использовать это вместо:

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

7

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

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

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

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


5
menu File -> project struct -> module select "app" -> dependencies tab -> + button 
-> File dependency -> PATH/myfile.jar

5

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

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

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

Шаг 4: Теперь эта банка была добавлена.

введите описание изображения здесь


4

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


4

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

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

3) В Android Studio перейдите в Файл -> Структура проекта -> Зависимости -> Добавить -> Зависимость файла и перейдите к файлу JAR, который должен находиться в «src / your_libs».

3) Выберите файл JAR и нажмите «ОК»

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


4

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

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

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


4

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

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

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

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

3

В Mac OS X:

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

  2. Добавить оператор компиляции в build.grade

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

    • заваривать грейдл
    • gradle -v
    • если не v1.6, обновите homebrew
  4. Gradle Clean (перестроить Android не работает)

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


3

Как и многие ранее, вы должны добавить

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

в ваш файл build.gradle.

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


3
  1. Добавлена libsпапка на уровне app.
  2. Добавлено все jarsв этом проекте.
  3. Далее выбрал все банки в libsпапке,
  4. щелкните правой кнопкой мыши на выбранных элементах и ​​скажите add library
  5. тогда вы найдете опцию расширения jars в самом проводнике проекта.

Я наблюдал CTRL+ ALT+ SHIFT+ S-> структуру проекта -> Приложение-модуль -> Зависимости»уже была запись как (dir: 'libs', include: '*.jar')под compile-option, первоначально и после добавления баночки это в соответствии с шагами , указанными выше,. build.gradleПолучили записи для нового добавлено баночка сама.


3

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

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

введите описание изображения здесь

В вашем 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-файлы готовы к использованию.


Почему вы не используете каталог libs?
Дени Эрдынеев,

@ErdeniErdyneev Я даю другой подход для хранения файлов JAR. почему я не использую активы? какие-либо проблемы в моем подходе? Я готов исправить ошибки, если я ошибаюсь
Ранджит Кумар

3

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

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

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

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

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


2

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

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

    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 искать эту версию этого пакета, и говорит компилятору учитывать это при компиляции проекта (имея его в classpath)

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.