我知道这个问题:Adding local .aar files to my gradle build但解决方案对我不起作用。
我尝试将此语句添加到我的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')
,但没有运气。
我错过了什么?有任何想法吗?
附: Android Studio 0.8.2
在Josiah的回答的基础上,这是我如何使它工作。
按照他的指示(编辑下)(文件 - >新建 - >新模块 - >导入.JAR / .AAR)并导入.AAR。
然后在你的项目build.gradle(不是顶级的,'app'下的那个)中添加以下内容(在依赖项部分中):
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(使用工具栏按钮或在文件 - >同步中)。
(感谢Josiah让我朝着正确的方向前进)
(注意:在此之前我尝试将其添加到libs文件夹,尝试操纵顶级build.gradle
和应用程序级别build.gradle
,但这些都不适用于我的aars文件 - jar的工作正常,但不是aar文件)
在我的例子中,我只是将aar文件放在libs中,然后添加
dependencies {
...
api fileTree(dir: 'libs', include: ['*.aar'])
...
}
在build.gradle中,它的工作原理。我认为它与默认生成的依赖项类似:
implementation fileTree(dir: 'libs', include: ['*.jar'])
这一行包括来自aar
文件夹的所有jar
和libs
文件:
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/')
在app gradle文件实现项目中添加以下内容(路径:':项目名称')
更新:正如@ amram99所述,issue已在Android Studio v1.3发布时修复。
经过测试并通过以下规格验证
什么现在有效
旧答案:在最近的更新中,android的人通过Android Studio的添加新模块菜单选项打破了包含本地aar文件。检查此处列出的Issue。无论进入和退出IDE的功能列表,以下方法在处理本地aar文件时都有效。(今天测试过):
将aar文件放在libs目录中(如果需要,创建它),然后在build.gradle中添加以下代码:
dependencies {
compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
编辑:使用本地AAR文件作为构建依赖项的正确方法(当前)是使用模块导入向导(文件|新模块|导入.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
顶级Gradle文件:
allprojects {
repositories {
jcenter()
// For module with aar file in it
flatDir {
dirs project(':Native_Ads').file('aars')
}
}
}
App模块的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')
}
而已。清洁和建造。
你可以这样做。它需要采用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等)
这是我的结构,以及我如何解决这个问题:
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取决于主模块的某个库。
对于从Android Studio 1.4开始出现此问题的任何人,我通过在项目中创建包含两件事的模块来实现它。
configurations.create("default")
artifacts.add("default", file('facebook-android-sdk-4.7.0.aar'))
然后将新库包含为模块依赖项。现在,您可以使用构建的aar而不包括项目中的源。
感谢Facebook的这个黑客。我在将Android SDK集成到项目中时找到了解决方案。
就我而言,上面的答案都没有奏效!因为我有不同的productFlavors只是添加repositories{
flatDir{
dirs 'libs'
}
}
不工作!我最终指定了libs目录的确切位置:
repositories{
flatDir{
dirs 'src/main/libs'
}
}
猜猜当build.gradle中有不同的productFlavor时,应该引入像这样的flatDirs