17

我正在尝试切换到 Android Studio 和 Gradle,但是在集成到 Studio 和使用 Gradle 构建时,我遇到了很多问题。

  • 我有一个依赖于多个库的应用程序。
  • 我想使用 Android Studio 和 Gradle 构建系统。
  • 我正在使用 git
  • 我的大多数库都直接git clone来自他们的 github 位置

目前,我所拥有的是:

Main Project
 ├── GH Lib 1
 │     ├── <some stuff from the lib>
 │     └── library
 │           ├── AndroidManifest.xml
 │           ├── res
 │           └── src
 ├── GH Lib 2
 │     └── <same structure as the lib 1>
 ├── GH Lib 3
 │     └── <same structure as the lib 1>
 │── GH Lib 4
 │     └── <same structure as the lib 1>
 └── My App folder
       └── AndroidManifest.xml
       └── res
       └── src
       └── libs

每个“GH Lib X”目录都是来自 GitHub 的 git clone 的结果(例如:ActionBarSherlock)。
“我的应用程序文件夹”直接包含res, src, AndroidManifest.xml, libs(with jars) 等。

第一个问题

我想了解如何将所有这些与 Gradle 集成到 Studio 中。目前每个库都是一个模块,并包含一个 build.gradle 文件。我的应用程序还包含一个 build.gradle 文件,但是我无法从其他文件夹引用依赖项,因为它们位于父文件夹中,而 Gradle 无法完成此 AFAIK。

这种结构会更好吗?

My App Folder
  │── AndroidManifest.xml
  │── res
  │── src
  │── libs
  └── dependencies
        │── GH Lib 1
        │── GH Lib 2
        │── GH Lib 3
        │── GH Lib 4
        └── My App folder

与此相关的第二个问题是与 git 的集成。目前所有的库都是 git 子模块,这是个好主意吗?

4

2 回答 2

2

您应该查看文档中附加的布局的多项目示例。

http://tools.android.com/tech-docs/new-build-system

http://docs.google.com/viewer?a=v&pid=sites&srcid=YW5kcm9pZC5jb218dG9vbHN8Z3g6NDYzNTVjMjNmM2YwMjhhNA

本质上,您需要一个将所有部分联系在一起的顶级 settings.gradle。理想情况下,它们应该在一个 git repo 中,以使您的生活更轻松。但是,您可能可以使用符号链接将它们绑定到包含您的顶级 settings.gradle 的通用构建存储库中。

于 2013-06-11T20:18:05.590 回答
2

这种结构可以正常工作。我在 Ubuntu 13.04 和 Android Studio 130.729444 中有类似的结构并且一切正常。您应该settings.gradle在根项目中提供文件,其中包含对应该构建的每个模块的引用(基本上它是一个相对路径)。

include ':my-app', ':gh-lib-1:library', ':gh-lib-2:library'

build.gradle文件应包含所有项目通用的任务/配置。更多关于多项目设置可以在这里找到:http ://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

现在您的源目录位置不符合默认的 Android Studio 设置。您可以移动您的src,res目录或sourceSets在您的build.gradle. 每个项目都应该这样做。有关项目结构的更多信息:http ://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure

完成这些步骤后,您可以尝试通过build.gradle在“导入项目”对话框中选择根文件来将项目导入 Android Studio。

起初您可能由于Task 'assemble' not found in root project错误而无法在 IDE 中构建项目。这是 Android Studio 中的一个错误。幸运的是,有一个解决方法 - 只需包含task assemble{}build.gradle所有“根”项目的文件中。

于 2013-07-10T11:25:28.687 回答