项目概览

Android Studio 中的项目包含为应用定义工作区的所有内容,包括源代码和资产以及测试代码和编译配置。当您开始一个新项目时,Android Studio 会为您的所有文件创建所需的结构,并使其在 IDE 左侧的 Project 窗口中可见(依次点击 View > Tool Windows > Project)。本页面概述了项目内的关键组件。

模块

模块是源文件和编译设置的集合,可让您将项目划分为独立的功能单元。您的项目可以包含一个或多个模块,一个模块可以将另一个模块作为依赖项。每个模块都可以单独编译、测试和调试。

在以下情况下添加更多模块通常会非常有用:在您自己的项目中创建代码库时,或者您希望为不同设备类型(例如手机和穿戴式设备)创建不同的代码和资源集,但将所有文件都限定在同一个项目中并共享一些代码时。

要向您的项目中添加新模块,请依次点击 File > New > New Module

Android Studio 提供了几种不同类型的模块:

Android 应用模块
该模块为应用的源代码、资源文件和应用级设置(例如模块级编译文件和 Android 清单文件)提供容器。当您创建新项目时,默认的模块名称是“app”。

Create New Module 窗口中,Android Studio 提供了以下类型的应用模块:

  • 手机和平板电脑模块
  • Wear OS 模块
  • Android TV 模块
  • Glass 模块

其中每个模块都提供适合相应应用或设备类型的基本文件和一些代码模板。

如需详细了解如何添加模块,请参阅为新设备添加模块

动态功能模块
该模块表示应用中可利用 Google Play Dynamic Delivery 的模块化功能。例如,借助动态功能模块,您可以为用户按需提供应用的某些功能或通过 Google Play 免安装体验为用户提供免安装体验。

要了解详情,请参阅添加对 Dynamic Delivery 的支持

库模块
该模块为可重用代码提供容器,您可以将其作为依赖项用在其他应用模块中或将其导入其他项目中。从结构上讲,库模块与应用模块相同,但在编译时,前者会创建代码归档文件而不是 APK,因此它无法安装在设备上。

Create New Module 窗口中,Android Studio 提供了以下库模块:

  • Android 库:这种类型的库可以包含 Android 项目中支持的所有文件类型,包括源代码、资源和清单文件。编译结果是一个 Android ARchive (AAR) 文件,您可以将其添加为 Android 应用模块的依赖项。
  • Java 库:这种类型的库只能包含 Java 源文件。编译结果是一个 Java 归档 (JAR) 文件,您可以将其添加为 Android 应用模块或其他 Java 项目的依赖项。
Google Cloud 模块
该模块为您的 Google Cloud 后端代码提供容器。该模块具有 Java App Engine 后端所需的代码和依赖项,该后端使用简单的 HTTP、Cloud Endpoints 和云消息传递连接到您的应用。您可以开发后端以提供您的应用所需的云服务。

使用 Android Studio 开发 Google Cloud 模块,您可以在同一个项目中管理应用代码和后端代码。您还可以在本地运行和测试后端代码,并使用 Android Studio 部署您的 Google Cloud 模块。

如需详细了解如何运行和部署 Google Cloud 模块,请参阅运行、测试和部署后端

也有人将模块称为子项目,这没关系,因为 Gradle 也将模块称为项目。例如,当您创建库模块并想将它作为依赖项添加到 Android 应用模块中时,您必须按如下方式进行声明:

    dependencies {
      compile project(':my-library-module')
    }
    

项目文件

默认情况下,Android Studio 会在 Android 视图中显示您的项目文件。此视图并不能反映磁盘上的实际文件层次结构,而是按模块和文件类型进行整理,以简化项目的关键源文件之间的导航方式,并隐藏某些不常用的文件或目录。与磁盘上的结构相比,一些结构变化包括以下方面:

  • 在顶级 Gradle Script 组中显示相应项目的所有与编译相关的配置文件。
  • 在模块级组中显示每个模块的所有清单文件(当您针对不同的产品类型和编译类型使用不同的清单文件时)。
  • 在一个组(而非在每个资源限定符的单独文件夹)中显示所有备用资源文件。例如,您的启动器图标的所有密度版本都可以并排显示。

在每个 Android 应用模块中,文件显示在以下组中:

manifests
包含 AndroidManifest.xml 文件。
java
包含 Java 源代码文件(以软件包名称分隔各文件,包括 JUnit 测试代码)。
res
包含所有非代码资源(例如 XML 布局、界面字符串和位图图像),这些资源划分到相应的子目录中。如需详细了解所有可能的资源类型,请参阅提供资源

Android 项目视图

要查看项目的实际文件结构(包括在 Android 视图中隐藏的所有文件),请从 Project 窗口顶部的下拉列表中选择 Project。

如果选择 Project 视图,您可以看到更多文件和目录。其中最重要的目录如下:

module-name/
build/
包含编译输出。
libs/
包含专用库。
src/
包含相应模块在以下子目录中的所有代码和资源文件:
androidTest/
包含在 Android 设备上运行的插桩测试的代码。如需了解详情,请参阅 Android 测试文档
main/
包含“主”源集文件:所有编译变体共享的 Android 代码和资源(其他编译变体的文件位于同级目录中,例如调试编译类型的文件位于 src/debug/)。
AndroidManifest.xml
描述应用及其各个组件的性质。如需了解详情,请参阅 AndroidManifest.xml 文档。
java/
包含 Java 代码来源。
jni/
包含使用 Java 本地接口 (JNI) 的本机代码。如需了解详情,请参阅 Android NDK 文档
gen/
包含 Android Studio 生成的 Java 文件,例如 R.java 文件和使用 AIDL 文件创建的接口。
res/
包含应用资源,例如可绘制对象文件、布局文件和界面字符串。如需了解详情,请参阅应用资源
assets/
包含应按原样编译为 .apk 文件的文件。您可以使用 URI 按照与典型文件系统相同的方式导航此目录,并使用 AssetManager 以字节流的形式读取文件。例如,此目录非常适合存储纹理和游戏数据。
test/
包含在主机 JVM 上运行的本地测试代码。
build.gradle(模块)
这定义了特定于模块的编译配置。
build.gradle(项目)
这定义了适用于所有模块的编译配置。该文件是项目不可或缺的一部分,因此您应该将其与所有其他源代码一起保留在修订版本控制系统中。

如需了解其他编译文件,请参阅配置构建

项目结构设置

要更改 Android Studio 项目的各种设置,请依次点击 File > Project Structure 打开 Project Structure 对话框。该对话框包含以下各部分:

  • SDK Location:设置项目使用的 JDK、Android SDK 和 Android NDK 的位置。
  • Project:设置 Gradle 和 Android plugin for Gradle 的版本以及目录代码库位置名称。
  • Developer Services:包含来自 Google 或其他第三方的 Android Studio 附加组件的设置。请参阅下文的开发者服务
  • Modules:可让您修改特定于模块的编译配置,包括目标和最低 SDK、应用签名以及库依赖项。请参阅下文的模块

开发者服务

“Project Structure”对话框的“Developer Services”部分包含您可为应用使用的多种服务的配置页面。此部分包含以下页面:

  • Google AdMob:允许您启用 Google 的 Google AdMob 组件,该组件可帮助您了解用户并向他们展示定制的广告。
  • Analytics:允许您启用 Google Analytics(分析),该组件可帮助您衡量用户在各种设备和环境中与您应用的互动情况。
  • Authentication:允许用户通过 Google 登录使用他们的 Google 帐号登录您的应用。
  • Cloud:允许您为应用启用 Firebase 基于云的服务。
  • Notifications:允许您使用 Google 云消息传递在您的应用与服务器之间通信。

启用其中任何一项服务都可能会使 Android Studio 为您的应用添加必要的依赖项和权限。每个配置页面都列出了 Android Studio 在您启用关联的服务时会执行的上述操作和其他操作。

模块

“Modules”设置部分可让您更改项目的每个模块的配置选项。每个模块的设置页面都分成以下标签:

  • Properties:指定编译模块所用的 SDK 和编译工具的版本。
  • Signing:指定用于签署您的 APK 的证书。
  • Flavors:允许您创建多种编译类型,其中每种类型都指定一组配置设置,例如模块的最低和目标 SDK 版本以及版本代码和版本名称例如,您可以定义两种类型,一种类型的最低 SDK 为 15、目标 SDK 为 21,另一种类型的最低 SDK 为 19、目标 SDK 为 23。
  • Build Types:允许您创建和修改编译配置,如配置 Gradle 编译中所述。默认情况下,每个模块都有调试和发布编译类型,不过您可以根据需要定义更多类型。
  • Dependencies:列出该模块的库、文件和模块依赖项。您可以在此窗格中添加、修改和删除依赖项。如需详细了解模块依赖项,请参阅配置 Gradle 编译