使用“flatDirs”将本地.aar文件添加到Gradle构build不起作用

我意识到这个问题: 添加本地.aar文件到我的gradle构build,但解决scheme不适合我。

我试着将这个语句添加到我的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

基于Josiah的回答,下面是我如何运作的。

按照他的指示(在编辑下)( 文件 – >新build – >新模块 – >导入.JAR / .AAR )并导入您的.AAR。

然后在你的项目build.gradle(不是顶层的,'app'下的)添加以下内容(在依赖项部分):

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

注意项目名称应该与导入AAR文件(与顶级文件夹下的app/.idea相同级别)后添加的文件夹的名称相匹配。 或换一种说法

我的应用程序
   。理念
  应用
   build.gradle(这里是添加编译项目(':ProjectName')到依赖部分)
   ProjectName(导入后自动添加,匹配您的aar文件的名称)
  build立
   gradle这个
  等等

这工作对我运行Android Studio 0.8.0。 执行此操作后,不要忘记同步gradle(使用工具栏button或在文件 – >同步 )。

(感谢Josiah让我走向正确的方向)

(注意:在此之前,我尝试将其添加到libs文件夹,试图操纵最高级别的build.gradle和应用程序级别的build.gradle ,但没有任何工作我的aars文件 – jar的将工作正常,但不aar文件)

更新 :正如@ amram99提到的,这个问题已经在Android Studio v1.3发布的时候被修复了。

testing和validation以下规格

  • Android Studio v1.3
  • gradle插件v1.2.3
  • Gradle v2.4

现在什么工作

  • 现在,您可以通过Android Studio v1.3中的文件>新build>新build模块>导入.JAR / .AAR包选项导入本地aar文件

  • 然而,下面的答案保持真实有效,不pipeAndroid Studio的变化,因为这是基于gradle脚本。


旧答案:在最近的更新中,android的人们通过Android Studio的添加新模块菜单选项打破了本地aar文件的包含。 检查这里列出的问题 。 无论进出IDE的function列表如何,下面的方法在处理本地的aar文件时都有效(今天testing过):

将aar文件放在libs目录(如果需要的话创build它),然后在build.gradle中添加下面的代码:

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

编辑:使用本地AAR文件作为构build依赖的正确方法是使用模块导入向导(文件|新build模块|导入.JAR或.AAR包),它将自动添加.aar作为库模块在你的项目中。

老答案

尝试这个:

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

我在Android Studio 2.1上工作。 我有一个名为“Native_Ads”,在多个项目中共享的模块。

首先,我在我的Native_ads模块中创build一个名称为“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文件(包含模块):

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

Native_Ads模块的Gradle文件:

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

而已。 清理和build立。

现在最简单的方法是将其作为模块添加

在这里输入图像描述

这将创build一个包含aar文件的新模块,因此您需要将该模块作为依赖关系包含在内

你可以这样做。 它需要采用maven格式:

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

然后你的AAR需要进入一个文件夹结构中的组ID“com.example”:

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

然后引用为依赖:

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

version是你的aar文件的版本(即3.0等)

对于Android Studio 1.4中存在这个问题的任何人,我通过在包含两件事情的项目中创build一个模块来解决这个问题。

  1. 搭build以下内容:

    configurations.create("default")

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

  2. aar文件(在这个例子中是“facebook-android-sdk-4.7.0.aar”)

然后将新库作为模块依赖包含在内。 现在,您可以使用build立的aar,而不在项目中包含源代码。

感谢Facebook的这个黑客。 我在将Android SDK集成到项目中的同时find了解决scheme。

在我的情况下,没有上述的答案工作! 因为我有不同的productFlavors只是添加repositories{ flatDir{ dirs 'libs' } }

不工作! 我结束了指定libs目录的确切位置:

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

}

猜测应该在build.gradle中有不同的productFlavors时引入flatDirs

这是我的结构,我如何解决这个问题:

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取决于主模块的某些库。