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