Добавление локального.AAR файлы для Gradle сборки с помощью "flatDirs" не работает


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

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

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

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

пробовал compile files('libs/slidingmenu.aar') также, но без везения.

что я упустил? Любой идеи?

P.S. Android Studio 0.8.2

9 141

9 ответов:

основываясь на ответе Джосайи, вот как я заставил его работать.

следуя его инструкциям (под edit) ( Файл - > Новый - > Новый Модуль - > Импорт .СОСУД./ААР) и импортировать .ААР.

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

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

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

MyApplication
  .idea
  app
  build.gradle (here's 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)

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

испытанный и подтверженный с внизу спецификациями

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

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

  • теперь вы можете импортировать локальный файл aar через File>New>New Модуль>Импорт .СОСУД./AAR Пакет опция в Android Studio v1. 3

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


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

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

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

Edit: Правильный способ (в настоящее время) использовать локальный файл AAR в качестве зависимости сборки-использовать мастер импорта модуля (File | New Module | Import .банка или. 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

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

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

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

сборка модуля приложения.файл gradle: - никаких изменений

настройки.Gradle в файл (для включения модуля):

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

вот и все. Чистить и строить.

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

enter image description here

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

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

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

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

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

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

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

здесь version Это версия вашего файла aar (ie, 3.0 и т. д.)

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

  1. построить.gradle со следующим содержанием:

    configurations.create("default")

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

  2. файл aar (в этом примере 'facebook-android-sdk-4.7.0.ААР')

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

кредит на Facebook для этого хака. Я нашел решение при интеграции Android SDK в проект.

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

не получилось! Я закончил с указанием точного местоположения libs:

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

}

думаю, нужно ввести flatDirs, как это, когда есть разные productFlavors в построить.gradle

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

MyProject / app / libs/mylib-1.0.0.ААР

MyProject / app/myModulesFolder / myLibXYZ

On построить.gradle

С Project / app/myModulesFolder / myLibXYZ

Я:

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

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