如何在Android Studio项目中包含库模块依赖项?

18

我正在将一个项目从Eclipse迁移到AndroidStudio。我有一个作为库在该项目中使用的项目,这个库被称为PullToRefresh。

我已经尝试了许多方法将此项目导入AS,但是我尝试过的任何方法都不起作用。

在我的项目中,我有这个文件夹结构:

Project Root
+-- app
|   +-- builds
|   +-- libs
|   |   +-- PullToRefresh (my lib project)
|   +-- src
|   |   +-- main (java code and resources)

在 build.gradle 文件中,我尝试做了这个:

dependencies {
    compile project(":libs:PullToRefresh")
}

但是我收到了这个错误信息:

Gradle 'my_project' project refresh failed: Project with path ':libs:PullToRefresh'
could not be found in project ':app'
2个回答

48

Android Studio使用项目模块的概念,所有模块都应位于根目录(即项目目录)下。一个模块可以依赖于其他模块。您的库被视为同一项目下的不同模块,您的主模块(在这种情况下为应用程序)依赖于它们。

稍微改变您的项目结构:

Project Root
+-- libs
    +-- PullToRefresh (my lib project)
+-- app
|   +-- builds
|   +-- src
|   |   +-- main (java code and resources)
    +-- .....
+--settings.gradle

在你的settings.gradle中加入这一行代码

include ':libs:PullToRefresh'

你的 build.gradle 文件看起来不错。我建议你将目录名从 libs 改为 library,因为 libs 应该用于你的 jar 依赖,而不是模块依赖。

并且在你的主模块的 build.gradle 文件中要保留这个:

dependencies {
    compile project(":libs:PullToRefresh")
}

2
Settings.gradle 应该在目录层次结构上更高一级,直接位于项目根目录下。虽然如果它能正常工作,那对我来说有点神秘。 - Scott Barta
@ScottBarta 是的 :) 我觉得我在绘图方面很差。实际上在Android Studio中它看起来是这样的,所以我就这样做了,但我再次检查发现是错误的。发布后我感到和你说的一样。如果有误导的地方,让我进行一些更正。 - Piyush Agarwal
@ScottBarta 真的!在我的情况下,settings.gradle是更高一级的。我认为pyus13搞错了。 - androidevil
它可以工作,但现在'libs'也被视为一个模块,并出现在Android Studio中。有什么办法可以忽略它吗? - b005t3r

8
从“帮助”菜单中搜索“导入模块”,然后会出现一个向导!

1
这对我有效,但由于此操作我找不到Gradle配置。 - JoshuaTree

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