Добавление локальных файлов .aar в сборку Gradle с использованием «flatDirs» не работает

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

Я попытался добавить это заявление на верхний уровень моего файла build.gradle :

 repositories { mavenCentral() flatDir { dirs 'libs' } } 

Я также помещал файл slidingmenu.aar в /libs и ссылался на него в разделе dependencies : compile 'com.slidingmenu.lib:slidingmenu:1.0.0@aar' но он вообще не работал.

Я пробовал compile files('libs/slidingmenu.aar') но не повезло.

Что мне не хватает? Есть идеи?

PS Android Studio 0.8.2

Solutions Collecting From Web of "Добавление локальных файлов .aar в сборку Gradle с использованием «flatDirs» не работает"

Основываясь на ответе Джосии, вот как я получил его на работу.

Следуя его инструкциям (под редакцией) ( Файл -> Новый -> Новый модуль -> Импорт .JAR / .AAR ) и импортируйте ваш .AAR.

Затем в вашем проекте build.gradle (а не на верхнем уровне один, под «приложением») добавьте следующее (в разделе зависимостей):

 dependencies { compile project(':Name-Of-Your-Project') } 

Примечание. Имя вашего проекта должно совпадать с именем папки, которая была добавлена ​​после импорта файла AAR (на том же уровне, что и app/.idea в папке верхнего уровня). Или сказать другим способом …

 Мое заявление
   .idea
   приложение
   Build.gradle (здесь можно добавить компиляционный проект (': ProjectName') в раздел зависимости)
   ProjectName (автоматически добавляется после импорта, сопоставляя имя вашего файла aar)
   строить
   Gradle
   и т.д

Это работало для меня под управлением Android Studio 0.8.0. Не забудьте синхронизировать граду (с помощью кнопки на панели инструментов или в File-> Synchronize ) после этого.

(Спасибо Иосии за то, что я пошел в правильном направлении)

(Примечание: перед этим я попытался добавить его в папку libs, пытаясь манипулировать верхним уровнем build.gradle и уровнем на уровне приложения build.gradle , но ни один из них не работал для моих файлов aars – jar's будет работать нормально, но не Файлы aar)

Обновление : как упоминалось в @ amram99, проблема была исправлена ​​с момента выпуска Android Studio v1.3.

Протестировано и проверено с нижеследующими спецификациями

  • Android Studio v1.3
  • Плагин gradle v1.2.3
  • Gradle v2.4

Что сейчас работает

  • Теперь вы можете импортировать локальный файл aar через опцию File> New> New Module> Import .JAR / .AAR в Android Studio v1.3

  • Однако приведенный ниже ответ остается верным и эффективным независимо от изменений в Studio Studio, поскольку он основан на сценариях градиента.


Старый ответ: в недавнем обновлении люди в android нарушили включение локальных файлов aar через дополнительный модуль меню Android Studio. Проверьте проблему, указанную здесь. Независимо от того, что входит в список функций IDE и выходит из него, метод ниже работает, когда дело касается локальных файлов aar (протестировано сегодня):

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

 dependencies { compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar') } repositories{ flatDir{ dirs 'libs' } } 

Изменить: Правильный способ (в настоящее время) использовать локальный файл AAR в качестве зависимости от сборки заключается в использовании мастера импорта модуля (File | New Module | Import .JAR или .AAR), который автоматически добавит .aar в качестве библиотечного модуля В вашем проекте.

Старый ответ

Попробуй это:

 allprojects { repositories { jcenter() flatDir { dirs 'libs' } } } ... compile(name:'slidingmenu', ext:'aar') 

Я работал над Android Studio 2.1. У меня есть модуль под названием «Native_Ads», который разделяется между несколькими проектами.

Во-первых, я создал каталог в моем модуле Native_ads с именем «aars», а затем разместил там файл aar.

Структура каталога:

 libs/ aars/ <-- newly created src/ build.gradle etc 

Затем другие изменения:

Файл верхнего уровня верхнего уровня:

 allprojects { repositories { jcenter() // For module with aar file in it flatDir { dirs project(':Native_Ads').file('aars') } } } 

Файл build.gradle в модуле приложения: – никаких изменений

Settings.gradle file (включить модуль):

 include ':app' include 'Native_Ads' project(':Native_Ads').projectDir = new File(rootProject.projectDir, '../path/to/Native_Ads') 

Файл Gradle для модуля Native_Ads:

 repositories { jcenter() flatDir { dirs 'aars' } } dependencies { compile(name:'aar_file_name_without_aar_extension', ext:'aar') } 

Вот и все. Очистите и постройте.

Вы можете сделать это таким образом. Он должен идти в формате maven:

 repositories { maven { url uri('folderName')} } 

И тогда ваш AAR должен войти в структуру папок для идентификатора группы «com.example»:

 folderName/ com/ example/ verion/ myaar-version.aar 

Тогда ссылка как зависимость:

compile 'com.example:myaar:version@aar'

Где version – это версия вашего файла aar (т. Е. 3.0 и т. Д.),

Для тех, кто имеет эту проблему с Android Studio 1.4, я получил ее для работы, создав модуль внутри проекта, который содержит 2 вещи.

  1. Build.gradle со следующим содержимым:

    configurations.create("default")

    artifacts.add("default", file('facebook-android-sdk-4.7.0.aar'))

  2. Файл aar (в этом примере «facebook-android-sdk-4.7.0.aar»)

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

Подпишитесь на Facebook для этого взлома. Я нашел решение, интегрируя Android SDK в проект.

Самый простой способ – добавить его как модуль

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

Это создаст новый модуль, содержащий файл aar, поэтому вам просто нужно будет включить этот модуль в качестве зависимости впоследствии

В моем случае ни один из ответов выше не работал! Так как у меня было другое productFlavors, просто добавляя repositories{ flatDir{ dirs 'libs' } }

не работал! В итоге я указал точное расположение каталога libs :

 repositories{ flatDir{ dirs 'src/main/libs' } 

}

Угадайте, что нужно вводить flatDirs, как это, когда в build.gradle есть разные productFlavors

Это моя структура и как я решаю это:

MyProject / app / libs / mylib-1.0.0.aar

MyProject / приложение / myModulesFolder / myLibXYZ

На build.gradle

Из Project / app / myModulesFolder / myLibXYZ

Я сказал:

 repositories { flatDir { dirs 'libs', '../../libs' } } compile (name: 'mylib-1.0.0', ext: 'aar') 

Сделанный и работающий отлично, мой подмодуль XYZ зависит от somelibrary от основного модуля.