如何使用Android Studio和Gradle创建最佳的Android应用程序项目结构?

时间:2013-06-11 19:48:07

标签: android gradle android-studio

我正在尝试切换到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克隆的结果(例如:ActionBarSherlock)。
“我的应用文件夹”直接包含ressrcAndroidManifest.xmllibs(带有广告)等。

第一个问题

我想了解如何在Studio中将所有这些内容与Gradle集成。目前,每个lib都是一个模块,并包含一个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的集成。目前所有的lib都是git子模块,这是一个好主意吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

基本上你想要一个将所有部分组合在一起的顶级settings.gradle。理想情况下,他们应该在一个单一的git仓库,让你的生活更轻松。但是,您可以使用符号链接将它们绑定到包含顶级settings.gradle的公共构建仓库。

答案 1 :(得分: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中移动ressourceSets目录或设置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中的bug。幸运的是,有一种解决方法 - 只需在task assemble{}文件中包含build.gradle所有“根”项目。