当我尝试使用gradle构建项目时,出现以下错误:
Failed to resolve: com.trnql:lib-release 1.0.0
似乎找不到libs文件夹中的android存档文件(aar)。 build.gradle文件的dependencies部分如下所示:
项目结构如下:
aar文件是有效的,它只是由构建系统解决。我该怎么做才能解决这个问题?
答案 0 :(得分:38)
这里的问题是gradle会尝试在其中一个声明的存储库中找到这个aar。 libs目录不是存储库...但你可以这样声明它:
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
并且gradle会找到它。
答案 1 :(得分:15)
当你创建一个新的Android工作室项目时,你的顶级build.gradle将有一个buildscript和一个allproject部分(见下文),如果你插入
flatDir {
dirs 'libs'
}
部分进入buildscript的存储库,它将无法工作 您必须将其粘贴到allprojects的存储库中,例如:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
答案 2 :(得分:4)
就我而言,在我的库模块中,我的build.gradle看起来像:
buildscript {
repositories {
flatDir {
dirs "libs"
}
}
}
我不得不删除buildscript
位,以便它最终看起来像这样:
repositories {
flatDir {
dirs "libs"
}
}
然后它能够同步,然后建立。
答案 3 :(得分:2)
尽可能完整:让我们说你希望你的AAR在子模块的另一个目录中....
然后在TOP LEVEL项目的build.gradle文件中,您将执行以下操作:
buildscript {
// stuff here
}
allprojects {
repositories {
// all your standard stuff, jcenter, maven, etc
flatDir {
dirs project(':MY_MODULE_NAME').file('MODULE_SUB_DIRECTORY')
}
}
}
如果您的模块目录布局如下所示:
MyFancyModule/
/aars <-- aar files go here
/build
/libs <-- jar files go here
/src
build.gradle <-- this is NOT your top level gradle file
然后你的TOP LEVEL GRADLE FILE中的行看起来像:
dirs project(':MyFancyModule').file('aars')
答案 4 :(得分:1)
将aar文件放入libs目录中,然后按如下所示修改build.gradle文件的一部分,不同之处在于,在编译fileTree时错过了* .aar
repositories {
flatDir {
dirs 'libs'
}
}
compile fileTree(dir:'libs', include:['*.jar', '*.aar'])
答案 5 :(得分:-4)
依赖项需要位于依赖项列表的顶部。
compile'com.trnql:lib-release:1.0.0@aar'在“compile fileTree ...”下面的列表顶部。