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

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

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

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

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

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

Что мне не хватает? Любые идеи?

P.S. Android Studio 0.8.2

Ответ 1

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

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

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

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

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

MyApplication
  .idea
  app
  build.gradle (here where to add compile project(':ProjectName') to dependency section)
  ProjectName (added automatically after importing, matching the name of your aar file)
  build
  gradle
  etc

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

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

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

Ответ 2

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

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

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

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

  • Теперь вы можете импортировать локальный файл aar через Файл > Создать > Новый Модуль > Импорт .JAR/.AAR Package в Android Studio v1.3

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


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

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

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

Ответ 3

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

Старый ответ

Попробуйте следующее:

allprojects {
  repositories {
    jcenter()
    flatDir {
      dirs 'libs'
    }
  }
}

...

compile(name:'slidingmenu', ext:'aar')

Ответ 4

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

Сначала я создал каталог в моем модуле Native_ads с именем "aars", а затем разместил там файл aar.

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

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

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

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

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')
}

Что это. Очистите и постройте.

Ответ 5

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

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

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

Ответ 6

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

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

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

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

Затем укажите как зависимость:

compile 'com.example:myaar:[email protected]'

Где version - это версия вашего файла aar (например, 3.0 и т.д.)

Ответ 7

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

MyProject/приложение/ЛИЭС/ 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 от основного модуля.

Ответ 8

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

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

    configurations.create("default")

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

  • aar файл (в этом примере "facebook-android-sdk-4.7.0.aar" )

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

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

Ответ 9

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

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

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

}

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

Ответ 10

В моем случае я просто помещаю файл aar в libs и добавляю

dependencies {... api fileTree(dir: 'libs', include: ['*.aar'])... }

в build.gradle и все работает. Я думаю, что это похоже на сгенерированную зависимость по умолчанию:

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

Ответ 11

Эта строка включает все файлы aar и jar из папки libs:

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

Ответ 12

Добавьте ниже в проект реализации файла gradle приложения (путь: ': имя проекта')