Gradle构建无法解析aar库依赖项(trnql sdk)

11
当我尝试使用gradle构建我的项目时,出现以下错误:
Failed to resolve: com.trnql:lib-release 1.0.0

看起来它找不到位于libs文件夹中的Android归档文件(aar)。 build.gradle文件的依赖项部分如下:

enter image description here

而项目结构看起来像这样:

enter image description here

文件有效,只是未被构建系统解析。我该怎么办来解决这个问题?

1
请问您正在使用哪个版本的Android Studio?这将会很有帮助... - ymz
这些指令适用于Android Studio和IntelliJ IDEA。 - nazmul idris
5个回答

47

问题在于Gradle会尝试在已声明的存储库中查找此AAR文件。而“libs”目录不是存储库……但您可以像这样声明它:

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

Gradle会找到它。


3
我已经在 build.gradle 文件中有这段代码了。我的错,本应该分享整个文件 :) - Cognitio
1
我忘了要添加这些代码。真是笨死了。 - Juan José Melero Gómez

18

当你创建一个新的Android Studio项目时,你的顶层build.gradle文件将包含buildscript和allproject部分(参见下文),如果您插入

flatDir {
            dirs 'libs'
        }

如果将其放入buildscript的repositories中,它将无法工作。
您必须将其粘贴到所有项目的repositories中,就像这样:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}

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

5
将您的aar文件放入libs目录中,然后修改build.gradle文件的部分内容如下所示。不同之处在于,在编译fileTree时您错过了*.aar。
repositories {
    flatDir {
        dirs 'libs'
    }
}

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

4
为了尽可能完整:假设您想要将AAR放在子模块中的另一个目录中...
然后在您的顶级项目的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 文件中的这行代码应该是这样的:

dirs project(':MyFancyModule').file('aars')

谢谢您的具体说明。许多答案并没有准确描述在哪里更新 Gradle 和路径。 - angryITguy

4

在我的情况下,我的库模块的build.gradle文件看起来像是这样的:

buildscript {
    repositories {
        flatDir {
            dirs "libs"
        }
    }
}

我必须删除buildscript部分,使其最终看起来像这样:

repositories {
    flatDir {
        dirs "libs"
    }
}

然后它能够同步,并在此后进行构建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接