Android 项目包含许多与构建相关的文件和目录结构,用于组织您的应用源代码和资源。在深入探讨配置详情之前,我们先了解一下整体结构以及每个部分的基本内容。
此表列出了 Android 项目中的典型文件。每个文件或目录的描述都包含关于其中应包含何种内容的说明。最佳实践会随着时间演变,因此这些描述可能与您继承或从互联网下载的项目不完全匹配。
在编写构建文件时,请使用声明式方法;构建逻辑和任务定义应仅出现在插件中。通过将构建逻辑限制在插件中,构建文件将成为数据声明,这更便于理解和编辑。未来版本可能会包含替代规范,例如 声明式 Gradle,这将阻止文件中的构建逻辑。
文件夹/文件 |
用途 |
---|---|
.gradle/ |
Gradle 项目缓存目录 由 Gradle 管理,包含下载的 Gradle 分发包、项目缓存和配置文件。 请勿更改此目录中的文件! |
.idea/ |
Android Studio 项目元数据 请勿更改此目录中的文件! |
build.gradle(.kts) |
应仅包含插件声明,以在所有子项目中设置通用的插件类路径。 其他代码应位于设置或嵌套项目级别的构建文件中。 |
gradle.properties |
包含 Gradle 属性,控制 Gradle 构建环境的各个方面,例如堆大小、缓存和并行执行。 此处定义了一些临时的 Android 属性,以减少在添加和后续移除 AGP DSL 时对其的更改。 |
gradlew(Linux、Mac) gradlew.bat(Windows) |
通过下载 Gradle 分发并将其命令转发给它来引导您的构建。这使您无需预先安装 Gradle 即可运行构建。 |
local.properties |
本地机器配置 包含与本地机器相关的属性,例如 Android SDK 的位置。 将此文件排除在源代码管理之外! |
settings.gradle(.kts) |
包含用于 Gradle 初始化和项目配置的全局构建信息,例如
|
gradle/ |
|
↳ libs.versions.toml |
定义构建中使用的依赖项和插件的变量。您在此处指定要使用的版本,以确保项目中所有子项目的一致性。 |
↳ wrapper/ |
|
↳ gradle‑wrapper.jar |
Gradle 引导可执行文件 下载指定的 Gradle 分发(如果不存在),然后运行它,并传递任何参数 |
↳ gradle‑wrapper.properties |
Gradle 封装器的配置 指定下载 Gradle 分发的位置(包括要使用的版本)。 |
app/ |
子项目(在 Android Studio 中称为“模块”)可以构建应用或库,并且可能依赖于其他子项目或外部依赖项。
|
↳ build.gradle(.kts) |
声明如何构建此子项目。每个子项目都需要一个单独的构建文件,并且应包含
您不应在构建文件中包含构建逻辑(例如 Kotlin 函数定义或条件)或任务声明。构建逻辑和任务应仅包含在插件内部. |
↳ src/ |
子项目源文件 |
↳ main/ |
主 源集 所有构建变体通用的源代码和资源。此源代码作为所有构建的基础,其他更具体的源集会在此源代码的基础上添加或覆盖它。 |
↳ java/ ↳ kotlin/ |
Kotlin 和 Java 源代码 此 |
↳ res/ |
包含应用资源,例如 XML 文件和图片。所有应用都会使用一些基本资源,例如启动器图标,但其中许多资源(例如布局和菜单)仅用于基于视图的应用。Compose 应用使用此目录下定义的字符串资源。 |
↳ AndroidManifest.xml |
由 Android 软件包管理器读取,以告知系统
|
↳ androidTest/ |
设备测试源集 包含将在 Android 设备或模拟器上运行的测试的源代码。这些测试可以访问真实的 Android 环境,但执行速度比主机测试慢。 |
↳ test/ |
主机测试源集 包含在 JVM 中本地运行的测试的源代码,而不是在设备上运行的测试。这些测试的运行速度比设备测试快得多。但是,任何系统调用(包括运行您的应用的生命周期)都必须被模拟、伪造、打桩或以其他方式模拟。 main 源集中的所有源文件都可供 test 下的源使用. |
↳ proguard-rules.pro |
定义用于控制应用收缩、优化和混淆的规则。R8 会移除不需要的代码和资源,优化运行时性能,并通过重命名标识符进一步最小化您的代码。 |