我正在尝试切换到Android Studio和Gradle,但是我在使用集成到Studio和使用Gradle构建时遇到了一些问题。
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)。
“我的应用文件夹”直接包含res
,src
,AndroidManifest.xml
,libs
(带有广告)等。
第一个问题
我想了解如何在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子模块,这是一个好主意吗?
答案 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
中移动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中的bug。幸运的是,有一种解决方法 - 只需在task assemble{}
文件中包含build.gradle
所有“根”项目。