Как открыть aar android studio

Что Такое .Aar Библиотеки?

Published Jul 15, 2015 by Andriy Druk

Уже прошло больше года с анонса Android New Build System, работа над которой кипит и по сей день: в экспериментальной области все еще находится несколько увлекательных возможностей Jack and Jill Tool Chain и NDK Integration.

Но одной из самых ожидаемых возможностей новой системы сборки стала поддержка aar бибилотек — нового бинарного формата бибилотек, который в отличии от jar бибилотек может содержать android ресурсы (res, assets, native libraries, etc). В это статье я хотел поделиться своим опытом работы с aar бибилиотеками.

1. Что такое .aar бибилотеки?

Официальная документация говорит о том что aar — это бинарный дистрибутив Android Library Project и прдеставляет собой zip файл с расширением .aar, котороый содержит:

  • /AndroidManifest.xml (mandatory)
  • /classes.jar (mandatory)
  • /res/ (mandatory)
  • /R.txt (mandatory)
  • /assets/ (optional)
  • /libs/*.jar (optional)
  • /jni/ /*.so (optional)
  • /proguard.txt (optional)
  • /lint.jar (optional)

Разберем подробней. AndroidManifest.xml это оригинальный манифест с вашей библиотеки. Файл сlasses.jar содержит скомпилированные java классы библиотеки (они будут слиты с остальными во время компиляции основного проекта). Исходя из документации R.txt это выходной файл aapt (Android Asset Packaging Tool) с флагом –output-text-symbols, тоесть это часть вашего R.java который будет слит с остальными результатами работы aapt при сборке основного проекта. Далее идут директории assets, res, libs и jni, которые содержат оригинальные файлы из каталога src вашей бибилотеки (часть содержимого каталога res может быть удаленно после выполнения обфускации). Файл proguard.txt копируется из вашей root директории библиотеки для того чтобы передать правила обфускации в основной проект. При работе с .aar стоит учитывать что если флаг minifyEnabled в build.gradle файле вашей библиотеки установлен в true, то при сборке она будет обфусцирована. Также aar бибилитека может содержать пользовательские lint правила в lint.jar, они будут распостраняться и на основной проект.

2. Как посторить .aar библиотеку?

Для того чтобы построить aar бибилотеку достаточно выполнить ./grdlew assemble в корне вашего проекта. Эта команда соберет все flavour и buildTypes. Но по причине ограничений gradle по умолчанию приложениями будет использоваться всегда defaultRelease сборка вашей aar бибилотеки. Если вы хотите поменять default конфигурацию, это можно сделать так

В первом случае в качестве default конфигурации используется debug build, во втором debug build варианта flavor1. Кроме того вы можете включить публикацию всех конфигураций:

3. Как подключить .aar бибилиотеку?

Существует 4 способа подключения aar библиотек:

  • Подключение в качестве модуля
  • Плоский репозиторий (Flat directory)
  • Локальный репозиторий (Local maven repo)
  • Удаленный репозиторий (Remote maven repo)

3.1 Подключение модуля

Это пожалуй самый простой способ и с ним знакомо большинство Android разработчиков. Вы можете импортировать библиотеку как модуль в ваш проект и установить зависимость в своем основном проекте следующим образом:

Читайте также:  Obj чем открыть андроид

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

3.1 Плоский репозиторий

Самый простой способ подключения aar бибилотек в собраном виде это простое копирование в директорию проекта. Для того чтобы установить зависимость на такой файл нужно включить директорию в список своих репозиториев в build.gradle

После этого можно подключать библиотеку:

Версия бибилиотеки и namespace в данном случая ни на что не влияют, так как flatDir репозитории их просто игнорируют.

3.2 Локальный репозиторий

Для использования такого подхода вам нужен maven репозиторий разположений локально на вашем компьютере. Существует множество готовых gradle плагинов для публикации aar бибилиотек, но мы воспользуемся консольной устилитой mvn. Для начала следует проверить наличие установленого maven в вашей системе.

Если он отсутвует, его следует установить. Для публикации артефакта (в нашем случае .aar библиотеки) в репозиторий используйте команду:

На самом деле команда mvn install выполнит копирование вашего aar файла в директорию локального репозитория и сгенерирует соотвествующий pom.xml файл. Перейдем в

/.m2/repository директорию на вашем компьютере. После выполнения команды install в этой директории должны появится поддиректории вашего домена, в случае моего приемера это

В это каталоге располгаются все версии вашего aar артефакта (под этим термином подразумевается любой бинарный файл помещеный в maven репозиторий). В моем случае это директория 1.0.0 в которой содержится 3 файла: _remote.repositories, mDNSShared-1.0.1.aar, mDNSShared-1.0.1.pom. Теперь подключим бибилотеку из локального репозитория. Прежде всего нужно добавить локальный maven репозиторий в список доступных:

После этого можно устанавливать зависимости с помощью ключего слова compile также как мы это делает с flatDir

Именно такой подход распотсранения aar использован в Android Support Libraries. Все локальные maven репозитории разпаковуются и обновляются вместе с sdk. Можете заглянуть в директории ANDROID_HOME/extras/android/m2repository или ANDROID_HOME/extras/google/m2repository.

3.3 Удаленный репозиторий

Подход с использвованием удаленного репозитория ничем не отличается от локального за исключением необходимости указания ссылки на репозиторий. Gradle соддержит ссылки на Maven Central и JCenter репозитории. Кроме этого gradle позволяет указывать прямой url на сервер maven репозитория:

Установка зависимостей аналогична предыдущим способам:

Источник

Как импортировать файл .aar в Android Studio 1.1.0 и использовать его в моем коде

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

Мне нужно импортировать файл .aar в проект, созданный с помощью Android Studio 1.1.0 , я импортировал его с помощью опции «Новый модуль», и на самом деле я не получаю никаких ошибок, я могу создать приложение и запустить его, но Когда я пытаюсь использовать класс из этого .aar-файла, Android Studio не находит ссылку на него, допустим, он не может распознать пакет, который я хочу включить в свой код.

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

Итак, кто-то может сказать мне, какой правильный способ импортировать и использовать файл .aar в Android Studio 1.1.0

Чтобы импортировать библиотеку .aar:

  1. Перейдите в меню «Файл»> «Создать»> «Новый модуль»
  2. Выберите «Импортировать пакет .JAR / .AAR» и нажмите «Далее».
  3. Введите путь к файлу .aar и нажмите «Готово».
  4. Перейдите в раздел «Файл»> «Структура проекта» (Ctrl + Shift + Alt + S).
  5. В разделе «Модули» в меню слева выберите «приложение».
  6. Перейдите на вкладку «Зависимости».
  7. Нажмите зеленый «+» в верхнем правом углу.
  8. Выберите «Dependency Module»
  9. Выберите новый модуль из списка.
Читайте также:  Что такое геоданные андроиде

Прочитав много ответов на Stackoverflow, я нашел решение для своей проблемы, я хочу, чтобы вы знали, какие шаги я выполнил, чтобы воспроизвести его:

  1. Добавьте файл .aar в папку lib.
  2. Используйте опцию «Новый модуль» в меню «Файл».
  3. Импортируйте файл .aar.
  4. Постройте град и скомпилируйте проект.

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

Проблема связана с версией Gradle, я использовал 1.1.0, и в этой версии есть ошибка, поэтому мое предложение – изменить версию до 1.0.1 , есть проблема, уже открытая, чтобы исправить эту проблему https://code.google.com/p/android/issues/detail?id=162634

Вы должны изменить версию в файле build.gradle, расположенном в корне вашего проекта.

Дополнительную информацию об этой проблеме вы можете найти здесь: https://groups.google.com/forum/#!topic/adt-dev/1Ho_c8dALQQ

Думаю, в версии 1.2.0 эта проблема будет решена.

Источник

Как включить файлы aar, используемые в библиотечных проектах в основной проект в Android

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

Если я сохраняю дубликаты файлов aar в app — >lib и определяю их зависимость в app->Gradle file, то проблем нет. Но это не должно быть правильным подходом.

пожалуйста, найдите ниже ошибки:

возникла проблема с настройкой проекта ‘: app’.

пожалуйста, найдите ниже структуры проекта:

в приложении gradle файл ниже был упомянут, чтобы включить проект

пожалуйста, найдите ниже файл gradle misnapworkflow:

5 ответов

на aarне содержит транзитивное зависимости и не имеет файла pom, который описывает зависимости, используемые библиотекой.

Это означает, что, если вы импортируете файл AAR с помощью flatDir РЕПО вы также должны указать зависимости в своем проекте.

вы должны использовать хранилище maven (вы должны опубликовать библиотеку в частном или публичном репозитории maven), вы не будет иметь ту же проблему.
В этом случае gradle загружает зависимости с помощью файла pom, который будет содержать список зависимостей.

выполните следующие действия:

Шаг 1:

импорт .aar

Файл — — — > Создать — — — > новый модуль — — — > (выбрать) импорт .СОСУД./Пакет AAR — — — > Далее — — — >(выберите .aar файл тогда) Finish

теперь ваш существующий проект импортируется.

Шаг 2:

добавить dependencies

файл — — — > структура проекта — — — > (Теперь вы получите список модулей в левой части внизу.)- — — >(Выберите app модуль) — — — > выберите вкладку зависимости — — — > нажмите кнопку ( + ) — — — > Выберите зависимости модуля —> (выберите модуль, который вы добавили) —> ok —> ok

Примечание: для проверки зависимости добавляется

код build.gradle выглядит так:

необходимо включить репозиторий jcenter. В сборке уровня приложения.тип gradle:

эти зависимости отличаются от остальных.

в моем случае сработало следующее:

положить .файл aar в каталоге libs (создайте, если необходимо), затем добавьте следующий код в свою сборку.gradle (уровень приложения):

если я сохраняю дубликаты файлов aar в app — >lib и определяю их зависимость в app->Gradle file, то проблем нет. Но это не должно быть правильным подходом.

ты прав, твой app не следует определять зависимости библиотеки AAR в build.gradle . Это обычная практика для сторонних библиотек, таких как OkHttp, Picasso или RxJava. Эти библиотеки, по сути, имеют свои собственные зависимости, как и ваша библиотека AAR.

Читайте также:  Андроид авто поддерживаемые автомобили

так, как получилось OkHttp, Picasso или RxJava не просит ваше приложение включать их зависимости? Потому что они включили их зависимостей от POM файл. Файл POM содержит файл конфигурации для AAR, включая артефакт, имя группы, версию и ее зависимости.

давайте возьмем в качестве примера OkHttp. OkHttp и его зависимости хранятся в компьютере других людей. Перейти к mvnrepository.com и искать OkHttp.

вы найдете OkHttp и его POM-файл.

когда вы включаете библиотеку в вашем build.gradle() , Gradle будет искать эту библиотеку в репозиториях, определенных на верхнем уровне build.gradle . Для OkHttp она хранилась в mavenCentral() .

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

но это не должно быть правильный подход.

  1. храните свою библиотеку и ее зависимости в репозитории Maven.

вы можете использовать локальный репозиторий Maven, разместить собственное репозиторий Maven или опубликовать свою библиотеку на Maven Central или Bintray. inthecheesefactory есть хороший учебник для этого.

  1. создайте файл POM для своей библиотеки.

при развертывании AAR у вас есть чтобы включить файл POM. Это можно сделать вручную.

  1. поделиться своей библиотекой с коллегами:

в приложения-уровень build.gradle добавить гав библиотеки.

вы и ваши сверстники должны иметь возможность использовать yourlibrary сейчас.

Источник

Generate an Android Archive( AAR) Using Android Studio and Add to an Android Project

This article provides Information for creating AAR for an Android Library module and use It with another android Project.

I have posted an article for creating an Android Library module in an Android Project and use that with the UI app module.

Please see the article if you need to know about creating the Library module in Android Project.

Create an Android Library and use in your Android Project

This blog is providing information that why modular code structure is important and how the android library can play an…

In this article, I will explain how we can generate the Android Archive( AAR) file for an Android Library module and Use that in different Android projects so that we can understand the Library creation can really save our redevelopment time cost by using the same module in different projects.

I will use Android Studio 4.0.2 and the same Project mention in the above-attached article.

I have created a project and a Library module It is shown below.

It is mentioned that I have created a Library Module named as currentTimeLib and I am using that module successfully within the project, now I will generate the AAR file and I will Import the AAR file into a different Android Project.

If you already know about creating the Library module then you can follow the steps directly.

If you want to Implement it then either complete the previous article (Click here) or pull the code from Git and try on that(Click here).

Please follow the steps>>

Step1: Start the Android Studio and open the project where you want to generate the AAR file.

Step2: Click the Gradle option in right most corner of android studio.

Step3: You will see the App name in the window, please unfold the options in the sequence shown below.

Источник

Оцените статью