Android Studio 中的项目包含为应用定义工作区的所有内容,包括源代码、资源、测试代码和 build 配置。
当您创建新项目时,Android Studio 会为您的所有文件创建必要的结构,并使其在 Android Studio 的 Project 窗口中可见。如需打开该窗口,请依次选择 View > Tool Windows > Project。
本页面将概括介绍您的项目内的主要组件。
模块
模块是源文件和构建设置的集合,可让您将项目划分为独立的功能单元。您的项目可以包含一个或多个模块,一个模块可以将另一个模块作为依赖项。您可以独立构建、测试和调试每个模块。
在以下情况下可以添加其他模块:在您自己的项目中创建代码库时;或者您希望为不同类型的设备(例如手机和穿戴式设备)创建不同的代码和资源集,但将所有文件都限定在同一个项目中并共享一些代码时。
如需向项目中添加新模块,请依次点击 File > New > New Module。
Android Studio 提供了几种不同类型的模块:
- Android 应用模块
- 此类模块为应用的源代码、资源文件和应用级设置(例如模块级 build 文件和 Android 清单文件)提供容器。当您创建新项目时,默认应用模块会命名为“app”。
Android Studio 提供了以下类型的应用模块:
- 手机和平板电脑
- Automotive
- Wear OS
- 电视
- 基准配置文件生成器
- 基准
每个模块都会提供适合相应应用或设备类型的基本文件和一些代码模板。
如需详细了解如何添加模块,请参阅为新设备添加模块。
- 功能模块
-
此类模块表示应用中可利用 Play Feature Delivery 的模块化功能。例如,借助功能模块,您可以按需为用户提供应用的某些功能,或通过 Google Play 免安装体验技术以免安装形式为用户提供应用的某些功能。
Android Studio 提供了以下类型的功能模块:
- 动态功能模块
- 即时动态功能库模块
如需了解详情,请参阅 Play Feature Delivery。
- 库模块
- 此类模块为可重用代码提供容器,您可以将其作为依赖项用在其他应用模块中或将其导入其他项目中。从结构上讲,库模块与应用模块相同,但在构建时,前者会创建代码归档文件而不是 APK,因此它无法安装在设备上。
在 Create New Module 窗口中,Android Studio 提供了以下类型的库模块:
- Android 库:包含 Android 项目中支持的所有文件类型(原生 C++ 代码除外),包括 Java 和 Kotlin 源代码、资源和清单文件。构建结果是一个 Android ARchive (AAR) 文件,您可以将其添加为 Android 应用模块的依赖项。
- Android 原生库:与 Android 库类似,包含 Android 项目中支持的所有文件类型。不过,Android 原生库还可以包含原生 C++ 源代码。构建结果是一个 Android ARchive (AAR) 文件,您可以将其添加为 Android 应用模块的依赖项。
- Java 或 Kotlin 库:仅包含 Kotlin 或 Java 源文件。构建结果是一个 Java Archive (JAR) 文件,您可以将其添加为 Android 应用模块或其他 Kotlin 或Java 项目的依赖项。
模块有时也称为子项目,因为 Gradle 也将模块称为项目。
当您创建库模块并想将它作为依赖项添加到 Android 应用模块中时,您必须按如下方式声明它:
Groovy
dependencies { implementation project(':my-library-module') }
Kotlin
dependencies { implementation(project(":my-library-module")) }
项目文件
默认情况下,Android Studio 会在 Android 视图中显示您的项目文件。此视图并未反映磁盘上的实际文件层次结构。相反,它按模块和文件类型进行整理,以简化项目的关键源文件之间的导航,并隐藏某些不常用的文件或目录。
Android 视图与磁盘上文件结构之间的一些结构差异在于 Android 视图:
- 在顶级 Gradle Script 组中显示项目所有与构建相关的配置文件。
- 在模块级组中显示每个模块的所有清单文件(当您针对不同的产品变种和 build 类型使用不同的清单文件时)。
- 在一个组(而非在每个资源限定符的单独文件夹)中显示所有备用资源文件。例如,启动器图标的所有密度版本都可以并排显示。
在每个 Android 应用模块中,文件显示在以下几个组中:
- manifests
- 包含
AndroidManifest.xml
文件。 - java
- 包含 Kotlin 和 Java 源代码文件(以软件包名称分隔各文件),包括 JUnit 测试代码。
- res
- 包含所有非代码资源(例如界面字符串和位图图像),这些资源划分到相应的子目录中。如需详细了解可能的资源类型,请参阅应用资源概览。
“Project”视图
如需查看项目的实际文件结构(包括在 Android 视图中隐藏的所有文件),请从 Project 窗口顶部的菜单中选择 Project。
选择 Project 视图后,您可以看到更多文件和目录,其中包括:
module-name/
-
build/
- 包含构建输出。
libs/
- 包含专用库。
src/
- 包含相应模块在以下子目录中的所有代码和资源文件:
androidTest/
- 包含在 Android 设备上运行的插桩测试的代码。如需了解详情,请参阅在 Android Studio 中进行测试。
cpp/
- 包含使用 Java 原生接口 (JNI) 的原生 C 或 C++ 代码。如需了解详情,请参阅 Android NDK 文档。
main/
- 包含“主”源代码集文件:所有 build 变体共享的 Android 代码和资源(其他 build 变体的文件位于同级目录中,例如调试 build 类型的文件位于
src/debug/
中):AndroidManifest.xml
- 描述应用及其各个组件的性质。如需了解详情,请参阅应用清单概览。
java/
- 如果您的应用包含 Kotlin 和 Java 源代码,则该目录会包含 Kotlin 和/或 Java 源代码。
kotlin/
- 仅包含 Kotlin 源代码。
res/
- 包含应用资源,例如可绘制对象文件和界面字符串文件。如需了解详情,请参阅应用资源概览。
assets/
- 包含要按原样编译为 APK 文件的文件。例如,此目录非常适合存储纹理和游戏数据。您可以使用 URI 像浏览一般的文件系统一样浏览此目录,以及使用
AssetManager
以字节流形式读取文件。
test/
- 包含在主机 JVM 上运行的本地测试代码。
build.gradle
或build.gradle.kts
(模块)- 此文件定义了特定于模块的 build 配置。如果您使用 Groovy 作为 build 脚本语言,
build.gradle
是正确的文件名;如果您使用的是 Kotlin 脚本,则文件名为build.gradle.kts
。
build.gradle
或build.gradle.kts
(项目)- 此文件定义了适用于所有模块的 build 配置。如果您使用 Groovy 作为 build 脚本语言,
build.gradle
是正确的文件名;如果您使用的是 Kotlin 脚本,则文件名为build.gradle.kts
。 该文件是项目不可或缺的一部分,因此请将其与所有其他源代码一起在修订版本控制系统中进行维护。如需了解其他 build 文件,请参阅配置 build。
项目结构设置
如需更改 Android Studio 项目的各种设置,请依次点击 File > Project Structure,打开 Project Structure 对话框。该对话框包含以下各部分:
- Project:设置 Gradle 和 Android Gradle 插件的版本以及代码库位置名称。
- SDK Location:设置项目使用的 JDK、Android SDK 和 Android NDK 的位置。
- Variables:可让您修改 build 脚本中使用的变量。
-
Modules:可让您修改特定于模块的 build 配置,包括目标和最低 SDK、应用签名以及库依赖项。每个模块的设置页面都分成以下标签页:
- Properties:指定编译模块所用的 SDK 和构建工具的版本。
- Signing:指定用于为应用签名的证书。
-
Dependencies:列出该模块的库、文件和模块依赖项。您可以在此窗格中添加、修改和删除依赖项。如需详细了解模块依赖项,请参阅配置 build 变体。
-
build 变体:可让您为项目配置不同的变种和 build 类型。
-
变种:可让您创建多个 build 变种,其中的每个变种用于指定一组配置设置,例如模块的最低和目标 SDK 版本以及版本代码和版本名称。
例如,您可以定义两个变种,一个变种的最低 SDK 为 21、目标 SDK 为 29,另一个变种的最低 SDK 为 24、目标 SDK 为 33。
- build 类型:可让您创建和修改 build 配置,如配置 build 变体中所述。默认情况下,每个模块都有“debug”和“release”这两种 build 类型,但您也可以根据需要定义更多 build 类型。
-