Проблема
Вы хотите ссылаться на внешнюю библиотеку JAR в исходном коде Android-проекта.
Решение
Существует несколько решений.
- Используйте каркас
Maven
или системуGradle
для создания своего проекта. Просто укажите зависимость Maven или Gradle, и ваш инструмент сборки загрузит и проверит ее. - Установите зависимость от модуля (Android Studio) или библиотечного проекта.
- Последнее средство — загрузите файл JAR для требуемой библиотеки и добавьте его в свой проект.
Обсуждение
Мы описываем здесь различные механизмы загрузки и включения файлов JAR в ваши проекты и не обсуждаем вопросы лицензирования при включении сторонних JAR-файлов (пусть это остается между вами и юридическим отделом вашей организации). Помните и соблюдайте лицензионные требования к файлам JAR, которые вы используете!
Перечислите зависимости
Немногие разработчики хотят явно загружать файлы JAR, когда такие инструменты, как Maven и Gradle, могут обрабатывать управление зависимостями за них. Для того чтобы использовать внешний интерфейс прикладного программирования, вам нужно лишь найти правильные координаты и перечислить их. Координаты состоят из трех частей.
- Идентификатор группы, который часто основывается на имени домена и имени проекта разработчика JAR, например
darwinsys
,org.apache.commons
и т.д. - Идентификатор артефакта, который является именем конкретного проекта от разработчика, например
darwinsys-api
,commons-logging-api
и т.д. - Номер версии/строка, например
0.1.
1.2.3-SNAPSHOT
,8.1.О-Stable
и т.д.
Эти три части объединены в форму, подобную следующему файлу build.xml
для системы Maven:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.1</version>
</dependency>
Для системы Gradle можно использовать более короткую форму в виде файла build.gradle
:
compile 'commons-logging:commons-logging-api:1.1'
Эта более короткая форма координат часто используется в документации даже при работе с другими инструментами, такими как Maven!
Как найти эту информацию для конкретного интерфейса API? Если вы знаете имя API, используйте все еще популярный сайте. Введите имя API (например, commons-logging) в поле поиска, выберите совпадение из списка, номер версии по умолчанию (если вы не знаете, что вам нужна более старая версия), выберите свою сборку, если она отличается от Maven (Maven предусмотрен по умолчанию, потому что его авторы создали всю эту замечательную инфраструктуру!), а также скопируйте и вставьте зависимость в свой инструмент сборки. Кроме того, вы можете использовать среду IDE (Studio или Eclipse с подключаемым модулем М2Е), чтобы явно добавить зависимость.
Как только зависимость окажется в вашем файле сборки, просто создайте свой проект! Если файл JAR, который вам нужен, еще не загружен, инструмент сборки загрузит его и сохранит в закрытом репозитории (например, для Maven, в репозитории $usER_HOME/.m2/repository
), поэтому вам не нужно его загружать снова, пока вы не измените номер версии, от которой зависите.
Подробнее о Apache Maven см. https://maven.apache.org/. Подробнее о Gradle см. https://gradle.org/. Авторы системы Gradle — довольно ревностные пропагандисты своего инструмента, в то время как разработчики Maven более отстраненные.
В будущем, если будете разрабатывать интерфейс API, который может быть полезен другим, и будете готовы сделать его доступным, а также создать сообщество вокруг него или организовать другие способы получить информацию о нем, рекомендуем вернуться к этому пулу программного обеспечения (см. сайт), чтобы включить в него свой файл JAR.
Зависимость от модуля или проекта
Находясь в среде Android Studio, щелкните правой кнопкой мыши на панели Project
(Проект) (в левой верхней части экрана) и выберите команду Open Module Settings
(Открыть параметры модуля). Выберите вкладку Dependencies
(Зависимости) и щелкните на кнопке Add
(Добавить) (знак + в левом нижнем углу). Выберите пункт Library
(Библиотека), чтобы использовать существующую библиотеку, File
(Файл) — для файла JAR или Module
(Модуль) — для модуля в вашем проекте. Предположим, вы хотите зависеть от моего JAR-файла darwinsys-api и загрузили его из репозитория Maven Central, поэтому вам не нужно отслеживать файл. Выберите вариант Library
(Библиотека). Введите строку “darwinsys” в поле поиска и нажмите клавишу <Enter>
. Через секунду или две вы увидите список проектов darwinsys. Щелкните на пункте darwinsys-api
(первый на рис. 1). Если необходимо добавить больше библиотек, повторите процесс добавления. По завершении щелкните на кнопке ОК
. Файлы сборки будут обновлены, зависимость будет загружена и станет доступной в вашем пути к классам.
Рис. 1. Добавление зависимости в среде Android Studio
Для среды Eclipse
- Если вы используете систему Maven и модуль М2Е, добавьте зависимость Maven, отредактировав файл
pom.xml
, затем щелкнув правой кнопкой мыши на проекте и выбрав Maven. После этого обновите проект. - Если вы не используете Maven, выполните операции для загрузки файла JAR вручную.
Загрузка файла JAR вручную
Предположим, вам нужно использовать AndroidPlot, библиотеку для построения диаграмм и графиков в вашем приложении, или OpenStreetMap, проект вики, который создает и предоставляет бесплатные географические данные и картографирование. Если это так, ваше приложение должно ссылаться на эти библиотеки. Вы можете сделать это в среде Eclipse несколькими простыми действиями.
- Загрузите файл JAR, соответствующий библиотеке, которую хотите использовать.
- Открыв проект Android в среде Eclipse, щелкните правой кнопкой мыши на имени проекта и выберите в меню команду
Properties
(Свойства) (рис. 2). - В списке слева выберите пункт
Java Build Path
(Путь сборки Java) и перейдите на вкладкуLibraries
(Библиотеки) (рис. 3). - Щелкните на кнопке
Add External Jars
(Добавить внешние файлы JAR) (рис. 4).
Укажите место, куда вы загрузили файл JAR для библиотеки, которую хотите использовать.
Рис. 2. Выбор свойств проекта
Рис. 3. Добавление библиотек в проект Eclipse
Рис. 4. Добавление внешнего файла JAR
На этом этапе в вашем проекте вы увидите каталог ссылочных библиотек. Кроме того, появятся файлы JAR, которые вы добавили.
Альтернативный подход — создать папку libs
в вашем проекте, физически скопировать туда JAR-файлы и добавить их индивидуально, как и раньше, но вместо этого щелкнув на кнопке Add JARs (Добавить JAR). Благодаря этому все файлы будут храниться в одном месте (это особенно полезно, если ваш проект совместно используется системой управления версиями с другими пользователями, которые могут использовать другую операционную систему и не смогут найти внешние JAR в одном месте).
Каким бы способом вы это ни делали, добавить библиотеки в свой проект довольно легко.