当前位置: 首页 > 知识库问答 >
问题:

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

秦城
2023-03-14

我试图切换到Android Studio和Gradle,但我有相当多的问题与集成到Studio和Gradle构建。

  • 我有一个依赖于几个库的应用程序。
  • 我想使用Android Studio和Gradle构建系统。
  • 我在用git
  • 我的大多数库都是直接从他们的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(带JAR)等。

第一个问题

我想了解我如何在Studio中与Gradle整合所有这些。目前,每个库都是一个模块,包含一个构建。格雷德尔档案。我的应用程序还包含一个构建。gradle文件,但是我不能引用其他文件夹中的依赖项,因为它们在父文件夹中,而这个AFAIK不能用gradle完成。

这种结构会更好吗?

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个答案

车思淼
2023-03-14

这种结构将很好地工作。我在Ubuntu 13.04和Android Studio 130.729444中有类似的结构,一切正常。您应该提供设置。根项目中的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设置。您可以移动您的srcres目录或在您的build.gradle中设置源集配置。每个项目都应该这样做。更多关于项目结构:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure

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

一开始您可能无法在IDE中构建项目,因为在根项目中找不到任务“汇编”错误。这是Android Studio中的一个bug。幸运的是,有一个解决方法-只需在build中包含task assemble{}。gradle所有“根”项目的文件。

颛孙星海
2023-03-14

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

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

http://docs.google.com/viewer?a=v

基本上,您需要一个顶级设置。将所有部件连接在一起的gradle。理想情况下,他们应该在一个单一的吉特回购,使您的生活更轻松。不过,您可能可以使用符号链接将它们绑定到包含顶级设置的公共构建repo中。格拉德尔。

 类似资料:
  • 问题内容: 想象一下,你想使用Python开发非平凡的最终用户桌面(非Web)应用程序。构造项目文件夹层次结构的最佳方法是什么? 理想的功能是易于维护,IDE友好,适用于源代码控制分支/合并以及易于生成安装软件包。 尤其是: 你将源放在哪里? 你将应用程序启动脚本放在哪里? 你将IDE项目放在哪里? 你将单元/验收测试放在哪里? 你将非Python数据(例如配置文件)放在哪里? 你在哪里将非Pyt

  • 我对分级建造系统和智能是新的。 那么我如何创建一个Android库项目(例如com.myapp.lib1)和应用程序项目(例如com.myapp.app),并使构建系统在应用程序项目上包含com.myapp.lib1呢? 我转到Project Structure->Modules->我的App项目,并向lib项目添加了一个依赖项。IntelliJ现在在应用程序项目中使用时可以从lib项目中识别类,

  • 如何从命令行(没有任何IDE)创建带有Android项目? 在使用util之前,如下所示

  • C:\Users\Price Charles 在C:\Users\Price Charles\larotiks中创建新的React应用程序。 安装包。这可能需要几分钟。使用cra模板安装反应、反应-多姆和反应-脚本... 我正在创建我的反应项目,但它总是卡在这里,不能继续创建我的项目。请帮帮我

  • 我想知道将应用程序分成多个独立部分的最佳方式(如果可能的话)是什么。例如,如果你有三个独立的单元来做不同的事情,你可能有两个不同的应用程序,它们结合了这三分之二的部分,你会怎么做? 我来自windows后台,在Visual Studio中,您可以在一个解决方案下拥有多个独立的项目,然后您可以在需要的地方重用它们。 你能在Android系统中使用这个吗?我知道我可以把东西放在不同的包中,但不确定如何

  • 我尝试使用gradle构建工具构建一个简单的android应用程序。但是我得到了这样的错误 方法无签名:org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.compile()适用于参数类型:(java.lang.String)值:[org.gradle.api.plugins: gradle and