Как подключить maven android studio

Создание Android-проектов с использованием Maven

Этот урок освещает создание простого Android проекта с Maven.

Что вы создадите

Вы создадите Android приложение, которое отображает время дня, а потом соберете его Maven’ом.

Что вам потребуется

  • Примерно 15 минут свободного времени
  • Любимый текстовый редактор или IDE
  • JDK 6 и выше
  • Android SDK
  • Android устройство или эмулятор

Как проходить этот урок

Как и большинство уроков по Spring, вы можете начать с нуля и выполнять каждый шаг, либо пропустить базовые шаги, которые вам уже знакомы. В любом случае, вы в конечном итоге получите рабочий код.

Чтобы начать с нуля, перейдите в Настройка проекта.

Чтобы пропустить базовые шаги, выполните следующее:

  • Загрузите и распакуйте архив с кодом этого урока, либо кнонируйте из репозитория с помощью Git: git clone https://github.com/spring-guides/gs-maven-android.git
  • Перейдите в каталог gs-maven-android/initial
  • Забегая вперед, установите Maven

Когда вы закончите, можете сравнить получившийся результат с образцом в gs-maven-android/complete .

Настройка проекта

Для начала, вам необходимо настроить Android проект для сборки Maven. Т.к. основное внимание данного урока уделено Maven, сделайте проект настолько простым, насколько это возможно. Если вы впервые работаете с Android проектами, установите и настройте ADT.

Создание структуры каталогов

В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/org/hello для *nix систем:

Создание Android манифеста

Android Manifest содержит всю информацию, необходимую для запуска Android приложения и оно не будет собираться без него.

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

Теперь определите визуальную структуру пользовательского интерфейса вашего приложения.

В директории src/main/java/org/hello вы можете создать любой Java класс, какой захотите. В соответствии с задачей урока, создайте следующий класс:

Установка Maven

Теперь у вас есть проект, который вы можете собрать с помощью Maven. Следующим шагом будет установка Maven.

Загрузите Maven как zip-файл с http://maven.apache.org/download.cgi. Достаточно только бинарники, поэтому смотрите ссылку на apache-maven--bin.zip или apache-maven--bin.tar.gz.

Загрузите и распакуйте файл, затем добавьте bin каталог в переменную окружения PATH.

Чтобы протестировать устаноку Maven, запустите mvn из командной строки:

Если все хорошо, то вы должны увидеть информацию об установке, похожую на эту:

Теперь у вас есть установленный Maven.

Настройка простой Maven сборки

Теперь, когда Maven установлен, вам необходимо создать определение Maven проекта через XML-файл pom.xml. Помимо всего остального, этот файл содержит имя проекта, версию и зависимости, которые он имеет от внешних библиотек.

Создайте файл с названием pom.xml в корне проекта и поместите в него следующее содержимое:

Это простейший pom.xml файл, который необходим для сборки Android проекта. Он состоит из следующих настроек проекта:

— Как проект будет собран, в данном случае как Android APK

Секция dependencies определяет список зависимостей проекта. В частности, она определяет единственную зависимость от Android библиотеки. В элементе dependency зависимость определяется деревом дочерних элементов:

В данном случае элемент имеет значение provided . Зависимости этого типа необходимы для компиляции кода проекта, но будут доступны и во время выполнения кода. К примеру, Android API всегда доступен, когда Android приложение запущено.

Секция определяет дополнительную конфигурацию для сборки приложения. В этой секции есть секция

, которая содержит список плагинов, которые добавляют функциональность процессу сборки. Здесь определена конфигурация для Android Maven Plugin. Для этой зависимости также имеются элементы , и . Плагин также содержит следующие элементы:

  • — Конфигурация плагина. Здесь вы определяете, с каким Android Platform SDK будет собираться проект
  • — Комбинация указания значений true и apk для

передает управление [Android Maven Plugin] в процессе сборки.

На текущий момент вы определили пока минимальный Maven проект.

Сборка Android кода

Сейчас Maven готов к сборке. Вы можете выполнить выполнить несколько задач сборки уже сейчас, включая компиляцию кода проекта, создание библиотеки пакета(JAR файл) и установить библиотеку в локальный репозиторий Maven зависимостей.

Эта команда запускает Maven, говоря ему выполнить задачу compile. Когда он завершит её, вы должны найти скомпилированные .class файлы в каталоге target/classes.

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

Эта задача компилирует ваш Java код, запускает тесты и упаковывает код в JAR файл каталоге target. Имя JAR файла состоит из значений и проекта. К примеру, исходя из содержимого pom.xml файла, отображенного ранее, JAR файл будет называться gs-maven-android-0.1.0.jar.

Т.к. вы установили значение элемента

в «apk», результатом будет АРК файл в target каталоге в дополнение к JAR файлу. Этот АРК файл является упакованным Android приложением, готовым к развертыванию на устройстве или эмуляторе.

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

Описание записимостей

Простой Hello World пример полностью самодостаточен и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений, зависят от внешних библиотек, предоставляющих некоторую функциональность.

К примеру, предположим, что вы хотите, чтобы приложение отображало текущие дату и время. Несмотря на то, что вы фактически можете использовать дату и время из нативных Java библиотек, возможно использовать более интересные для этого вещи, которые предоставляют Joda Time библиотеки.

Для этого, измените HelloActivity.java как показано ниже:

В этом примере используемый Joda Time LocalTime класс возвращает и отображает текущее время.

Если вы запустите mvn package сейчас, то сборка завершится с ошибкой, потому что вы не описали Joda Time как компилируемую зависимость в сборке. Для исправления этой ошибки, просто добавьте следующие строки в секцию файла pom.xml.

Пересборка Android кода с зависимостями

Теперь, если вы выполните mvn compile или mvn package , то Maven должен разрешить Joda Time зависимость из Maven Central репозитория и успешно собрать проект.

Ниже приведена полная версия pom.xml файла:

Поздравляем! Вы только что создали простой, но эффективный Maven проект с целью сборки Android проектов.

Источник

Как импортировать зависимость Maven в Android Studio / IntelliJ?

Я создал новый проект Android, используя мастер по умолчанию в Android Studio. Скомпилировано и развернуто приложение на моем устройстве. Все хорошо.

теперь я хочу импортировать внешнюю библиотеку, которая доступна на Maven. (http://square.github.io/picasso/). Я пошел в свойства модуля и добавил библиотеку Maven. Он правильно отображается в списке зависимостей. Кроме того, он отображается в редакторе и я могу правильно использовать его в код.

, в время компиляции, я получаю ошибку Gradle: не удалось найти класс

5 ответов

начиная с версии 0.8.9, Android Studio поддерживает центральный репозиторий Maven по умолчанию. Поэтому для добавления внешней зависимости maven все, что вам нужно сделать, это отредактировать сборку модуля.gradle файл и вставить строку в раздел зависимостей, как это:

вы увидите сообщение появится как » синхронизация сейчас. — щелкните его и дождитесь загрузки репозитория maven вместе со всеми его зависимостями. В строке состояния внизу будет несколько сообщений, сообщающих вам, что происходит по загрузке. После этого импортированный файл JAR вместе с его зависимостями будет отображаться в дереве внешних репозиториев в окне обозревателя проектов, как показано ниже.

Я использую артефакт springframework android в качестве примера

открыть сборки.Gradle в

затем добавьте следующее на том же уровне, что и применить плагин: ‘android’

вы также можете использовать эту нотацию для артефактов maven

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

здесь пример, который вы предоставили, что работает

Android Studio 3

ответы, которые говорят о Maven Central, датируются, так как Android Studio использует JCenter в качестве центра репозитория по умолчанию. Ваш проект построен.файл gradle должен иметь что-то вроде этого:

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

  1. снимите флажок «Автономная работа» в файле>настройки>Gradle>глобальный Gradle Настройки
  2. повторно синхронизировать проект, например, перезапустив Android Studio
  3. после синхронизации, вы можете снова проверить возможность работы в автономном режиме.

попробовать itext . Добавьте зависимость к вашему build.gradle за последний в этой должности

Примечание: специальная версия для android, трейлинг «g»:

Источник

Как импортировать зависимость Maven в Android Studio / IntelliJ?

Я создал новый проект Android, используя мастер по умолчанию в Android Studio. Скомпилирован и развернул приложение на моем устройстве. Все хорошо.

Теперь я хочу импортировать внешнюю библиотеку, доступную на Maven. ( Http://square.github.io/picasso/ ). Я пошел в свойства модуля и добавил библиотеку Maven. Он корректно отображается в списке зависимостей. Кроме того, он появляется в редакторе, и я могу правильно использовать его в коде.

Однако во время компиляции я получаю ошибку Gradle: невозможно найти класс

Начиная с версии 0.8.9, Android Studio поддерживает центральный репозиторий Maven по умолчанию. Поэтому, чтобы добавить внешнюю зависимость maven, вам нужно только отредактировать файл build.gradle модуля и вставить строку в раздел зависимостей следующим образом:

Появится сообщение «Sync now …» – щелкните его и дождитесь загрузки maven-репо вместе со всеми его зависимостями. В строке состояния появятся некоторые сообщения о том, что происходит с загрузкой. По завершении этого, импортированный файл JAR вместе со своими зависимостями будет указан в дереве внешних репозиториев в окне «Браузер проекта», как показано ниже.

В качестве примера я использую артефакт для артефактов springframework

Затем добавьте следующее на том же уровне, что и плагин: ‘android’

Вы также можете использовать это обозначение для артефактов maven

Ваша IDE должна отображать банку и ее зависимости в разделе «Внешние библиотеки», если она не появляется. Попробуйте перезапустить среду IDE (это произошло со мной совсем немного)

Вот пример, который вы указали, что работает

  1. Снимите флажок «Работа в автономном режиме» в меню «Файл»> «Настройки»> «Град»> «Глобальные настройки»).
  2. Повторно протестируйте проект, например, перезагрузив Android Studio
  3. После синхронизации вы можете снова проверить этот параметр, чтобы работать в автономном режиме.

Обновленный ответ

Ответы, которые говорят о Maven Central, датируются с тех пор, как Android Studio теперь использует JCenter в качестве центра репозитория по умолчанию. Файл build.gradle вашего проекта должен иметь что-то вроде этого:

Так что пока у разработчика есть свой репозиторий Maven (который есть в Picasso), тогда вам нужно будет добавить одну строку в раздел зависимостей файла build.gradle вашего приложения.

Попробуйте itext . Добавьте зависимость от вашего build.gradle для последней build.gradle этого сообщения.

Примечание: специальная версия для android, завершающая «g»:

Источник

Публикация Android библиотеки в jCenter

В жизни каждого андроид разработчика настаёт момент, когда количество самописных утилит и хелперов, качующих из проекта в проект, переваливает за десяток. В этом случае хорошей практикой будет оформление подобных хелперов в виде самостоятельных «модулей» в терминах Android Studio. Еще лучше, если Вы собираетесь поделиться Вашими наработками с комьюнити, снабдив исходный код подходящей лицензией. Но просто залить исходники на GitHub в этом случае будет недостаточно – хочется, чтобы любой желающий мог подключить библиотеку с помощью однострочной Gradle зависимости, например такой:

О том, как этого добиться и пойдет речь в данной статье.

Как Android Studio подгружает зависимости

Вместе с выходом Android Studio разработчикам была предложена новая система автоматической сборки проектов Gradle. Теперь, чтобы добавить библиотеку в Ваш проект, достаточно поправить файл build.gradle, указав однострочную зависимость (в рассматриваемом случае она называется Remote Binary Dependency) в блоке dependencies:

После этого Android Studio загрузит указанную библиотеку нужной версии с сервера-хранилища и добавит в проект, что действительно очень удобно. Пожалуй, самыми популярным серверами-хранилищами Java библиотек являются jCenter и Maven Central. Аналогами можно назвать NPM для Node.js, NuGet для .Net, pip для Python и т.д.

Заглянем в build.gradle, расположенный в корне проекта:

Здесь jcenter() указывает, что Android Studio следует искать указанные зависимости в репозиториях jCenter. Аналогичная запись заставит Android Studio искать зависимости на Maven Central:

Последние версии Android Studio по умолчанию указывают jCenter — от части это связано с тем, что загрузка библиотеки в Maven Central требует больше усилий со стороны разработчика. jCenter считается крупнейшим хранилищем Java библиотек, но в то же время многие разработчики предпочитают Maven Central. Не стоит забывать, что jCenter и Maven Central являются физически разными серверами, и наличие библиотеки в одном не гарантирует её наличие в другом.

Наша задача загрузить библиотеку только в jCenter. Схематично процесс будет выглядеть так:

Шаг 0: Выбираем имя будущего пакета библиотеки

Существует конвенция именования пакетов, которой мы должны придерживаться. Название пакета состоит из 3-ех частей:

GROUP_ID: можно представить себе как идентификатор аккаунта, организации или package name, под которым распространяется библиотека или несколько библиотек. GROUP_ID должен быть в формате Reverse FQDN;
ARTIFACT_ID: название библиотеки или в терминологии Maven название «артефакта»;
VERSION: рекомендуется использовать паттерн вида x.y.z, но допустимо использование любых строковых значений.

Здесь com.squareup.okhttp это GROUP_ID, под которым распространяется множество библиотек, в частности okhttp и okhttp-urlconnection.

Примечание: при выборе GROUP_ID следует иметь в виду, что Вам должен принадлежать выбранный домен. В противном случае возникнут проблемы при его регистрации на Шаге 2.

В качестве демонстрационного примера я буду использовать тривиальный класс SimplePrefs.java, который упрощает обращение к SharedPreferences. Подразумевается, что Вы можете самостоятельно смастерить из него библиотеку-модуль в Android Studio и разместить исходный код в публичном репозитории.

Поскольку исходный код я буду размещать на Github, то GROUP_ID мне следует выбрать в формате:

В качестве идентификатора артефакта будем использовать название библиотеки, версию выбираем любую. В моём случае название будущего пакета выглядит так:

Шаг 1: создаем контейнер в Bintray

Дело в том, что деплой библиотеки в Maven Central это весьма трудоёмкая задача, поэтому существуют сервисы, упрощающие этот процесс. Bintray — это система хранения библиотек, выступающая посредником между jCenter, Mavel Central и другими хранилищами. Ей-то мы и воспользуемся.

Создаём аккаунт на Bintray (достаточно бесплатного аккаунта) и подготавливаем контейнер, в который будет загружена наша библиотека: в разделе Owned Repositories выбираем Maven:

Жмём на Add New package:

Заполняем все поля, не забываем указать выбранную лицензию, жмём Create Package:

После этого Bintray подготовит наш контейнер:

Шаг 2: Регистрируем GROUP_ID с помощью Sonatype

Sonatype OSS Repository Hosting Service – это доверенное хранилище артефактов для Maven Central. Сервера Maven Central регулярно синхронизируются с OSSRH, и те артефакты, которые пользователь помечает как готовые к релизу, загружаются в центральное хранилище Maven Central. Чтобы зарегистрировать GROUP_ID, от имени которого Вы будете распространять библиотеки, нужно завести issue в их JIRA. После рассмотрения заявки Вам откроют нужный репозиторий на Sonatype, и Вы сможете загрузить артефакт.

Регистрируемся здесь, открываем и заполняем новую issue:

Остаётся дождаться ответа, после которого Вам создадут репозитории Sonatype с выбранным GROUP_ID. Мне ответили в течение часа:

изначально я не знал о том, что на GROUP_ID накладываются ограничения и выбрал такой: com.romangromov, на что получил ответ:


вот сылка из письма

После этого я сменил GROUP_ID на предложенный com.github.romangromov и успокоился.

Нам остаётся связать наш аккаунт Sonatype с Bintray, для этого идём в Настройки Профиля -> Accounts и указываем юзернейм, который зарегистрировали в джире Sonatype:

Шаг 3: Настраиваем автоматическую подпись пакетов в Bintray

Перед загрузкой артефактов в Maven Central они должны быть подписаны цифровой подписью. Bintray позволяет настроить автоматическую подпись новых пакетов или при загрузке обновлений для уже существующих. Для начала необходимо сгененировать приватный и публичный ключ. Стандарной утилитой для шифрования на линуксе является PGP( Pretty Good Privacy). Она бесплатна для частных лиц, но для использования её в коммерческих целях требуется лицензия. Полностью открытый аналог этой программы GnuPG (Gnu Privacy Guard) — делает то же самое, но абсолютно бесплатно.

Генерируем пару открытый-закрытый ключ:

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

Нам интересен идентификатор публичного ключа в строке pub: 2048R/

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

gpg —keyserver hkp://pool.sks-keyservers.net —send-keys PUBLIC_KEY_ID

Теперь экспортируем созданную пару ключей в виде текстовых файлов, не забывая подставить значение для почты, которую вы указали на шаге генерации ключей:

gpg -a —export yourmail@email.com > public_key_sender.asc
gpg -a —export-secret-key yourmail@email.com > private_key_sender.asc

Появятся два текстовых файла, копируем их содержимое, идём в Настройки Профиля на Bintray, раздел GPG Signing:

Остаётся поставить галочку, разрешающую автоматическую подпись: снова идём в редактирование профиля и ищем GPG Sign Uploaded files automatically.

Теперь загружаемые артефакты будут автоматически подписаны в Bintray.

Подробней можно почитать тут.

Шаг 4: настраиваем проект в Android Studio

Создаём типовой проект, который содержит два модуля:

1) Модуль библиотеки, SimplePrefsLibrary, который мы будем загружать в jCenter;
2) Модуль приложения, sample, демонстрирующего возможности библиотеки (не подлежит загрузке).

Для того, чтобы загрузить нашу библиотеку в Bintray мы воспользуемся плагином bintray-release для Gradle.

Дело в том, что перед загрузкой библиотеки в Bintray её необходимо снабдить определенными мета-данными, которые соответствуют требованиям jCenter или Maven Central. Чтобы не делать это вручную, мы воспользуемся плагином, который берёт на себя генерацию необходимых мета-файлов.

Сперва заберём API ключ, который нам любезно предоставляет Bintray: Настройки Профиля -> API Key:

Теперь идём в build.gradle в корне проекта, добавляем плагин:

Правим build.gradle для модуля библиотеки:

Здесь мы указали необходимые параметры конфигурации maven в Bintray, подробное описание параметров есть на wiki.

После этого открываем терминал в Android Studio и выполняем:

gradlew clean build bintrayUpload -PbintrayUser= -PbintrayKey= -PdryRun=false

Это запустит gradle скрипт сборки проекта и деплой в Bintray, и, если всё в порядке, мы увидим надпись BUILD SUCCESSFUL, иначе читаем сообщение и устраняем ошибки, как правило сообщения внятные/гуглятся.

Теперь идём в Bintray во вкладку Files и проверяем, загрузился ли пакет:

Если всё в порядке, то мы увидим содержимое нашего пакета. Отлично, теперь его может загрузить любой желающий! Но на данный момент пакет размещен в нашем персональном Maven репозитории, а не в Maven Central или jCenter. Чтобы его использовать необходимо указывать maven репозиторий автора в явном виде:

Мне самому не нравятся подобные зависимости, поэтому сразу же избавимся от этого с помощью синхронизации с jCenter (благо это делается в один клик!): идём в Bintray на страницу нашего пакета, жмём вкладку Maven Central и ссылку из всплывающего окна «Add to jCenter».

Ну вот и всё, после этого будет сформирован запрос на добавление библитеки в jCenter:

После того, как библиотека добавится в jCenter, появится значок c надписью Linked to jCenter, теперь любой желающий сможет использовать Вашу библиотеку с помощью однострочной зависимости:

Источник

Читайте также:  Как вывести ярлык андроид
Оцените статью