Android build 结构

Android 项目包含许多与构建相关的文件和目录结构, 组织您的应用来源和资源。在深入了解 我们将介绍整体结构和基本知识 每个部分的内容

下表列出了 Android 项目中的典型文件。每个广告素材的 文件或目录中包含有关该目录内容类型的备注。最佳 做法会随着时间的推移而不断变化,这些说明可能与项目不符 从互联网继承或下载的资源

编写 build 文件时,请使用声明式方法;构建逻辑和任务 只应出现在插件中。通过将构建逻辑限制在插件中, 构建文件变成了数据声明,这样更便于理解 和编辑。未来的版本可能会包含替代规范,如 声明式 Gradle,这会阻止在 文件。

文件夹/文件

使用

.gradle/

Gradle 项目缓存目录

由 Gradle 管理,包含下载的 Gradle 发行版、项目缓存和配置文件。

请勿更改此目录中的文件!

.idea/

Android Studio 项目元数据

请勿更改此目录中的文件!

build.gradle(.kts)

根 build 文件

应仅包含用于设置跨子项目通用插件类路径的插件声明。

其他代码应位于设置或嵌套项目级 build 文件中。

gradle.properties

Gradle 执行配置

包含 Gradle 属性,用于控制 Gradle 构建环境方面,例如堆大小、缓存和并行执行。

此处定义了一些临时的 Android 属性,以便在添加和移除 AGP DSL 时减少对 AGP DSL 的更改。

gradlew(Linux、Mac)

gradlew.bat(适用于 Windows)

Gradle 封装容器文件

通过下载 Gradle 发行版并将命令转发给它来引导 build。这样一来,您无需预安装 Gradle 即可运行构建。

local.properties

本地机器配置

包含与本地计算机相关的属性,例如 Android SDK 的位置。

从源代码控制系统中排除此文件!

settings.gradle(.kts)

Gradle build 初始化

包含 Gradle 初始化和项目配置的全局构建信息,例如

  • 项目名称
  • 要包含在此 build 中的子项目的列表
  • 用于查找插件和依赖项的仓库规范
  • 外部版本目录导入。

gradle/

☐ libs.versions.toml

版本目录

定义 build 中使用的依赖项和插件的变量。您可以在此处指定要使用的版本,以确保项目中的所有子项目之间的一致性。

☐ 封装容器/

☐ gradle‐wrapper.jar

Gradle 引导加载程序可执行文件

下载指定的 Gradle 发行版(如果不存在),并运行该发行版,并传递任意参数

☐ gradle‐wrapper.properties

Gradle 封装容器配置

指定 Gradle 发行版的下载位置(包括要使用的版本)。

app/

子项目目录

子项目(在 Android Studio 中称为“模块”)可以构建应用或库,并可能依赖于其他子项目或外部依赖项。

app 是顶级应用子项目的常规名称(但不是必需名称)。其他子项目具有类似结构,但名称也不同。

任何目录都可以是子项目,必须至少包含一个 build.gradle(.kts) 文件,并使用 settings.gradle(.kts) 包含在 build 中。

☐ build.gradle(.kts)

子项目级 build 文件

声明如何构建此子项目。每个子项目都需要一个单独的 build 文件,并且应包含

  • 用于构建此子项目的插件
  • 插件所需的配置块
  • 构建此子项目时包含的依赖项(库和平台)

您不应在 build 文件中包含构建逻辑(例如 Kotlin 函数定义或条件)或任务声明。构建逻辑和任务只能包含在插件内。

☐ src/

子项目源文件

将源文件(应用代码和资源)分组为源代码集。main 源代码集包含所有变体共有的源文件,而其他源代码集包含某个变体独有的源文件。

☐ main/

源代码集

所有 build 变体之间通用的源代码和资源。此源将作为所有构建的基础,并且会添加或替换其他更具体的源集。

☐ java/

☐ kotlin/

Kotlin 和 Java 源代码

java 目录可同时包含 Java 和 Kotlin 源代码。如果此子项目仅包含 Kotlin 代码,您可以将此目录重命名为 kotlin.

Android
,将其作为一个 Kotlin 优先平台。支持 Java 源代码,但新的 API 以 Kotlin 语言为目标平台。我们建议针对所有新代码和对现有代码进行重大更新使用 Kotlin。

☐ res/

Android 资源文件

包含应用资源,例如 XML 文件和图片。所有应用都会使用一些基本资源(例如启动器图标),但其中许多资源(例如布局和菜单)仅用于基于视图的应用。Compose 应用使用此目录下定义的 String 资源。

☐ AndroidManifest.xml

Android 应用元数据

由 Android 软件包管理器读取,以告知系统

  • 由您的应用定义的组件
  • 必要权限
  • 设备兼容性
  • Android 平台限制

☐ androidTest/

设备测试 源代码集

包含在 Android 设备或模拟器上运行的测试的源代码。这些测试可以访问真实的 Android 环境,但执行速度比主机测试慢。

main 源代码集中的所有源文件都可供 androidTest 下的源代码使用

☐ 测试/

主机测试 源代码集

包含在 JVM 本地运行的测试(而不是在设备上运行的测试)的源代码。这些测试的运行速度比设备测试快得多。但是,您必须模拟、伪造、打桩或以其他方式模拟任何系统调用(包括运行应用的生命周期)。

main 源代码集中的所有源文件都可供被测源代码使用

☐ proguard-rules.pro

R8 配置规则

定义用于控制应用缩减、优化和混淆的规则。R8 移除了不需要的代码和资源,优化运行时性能,并通过重命名标识符进一步最大限度地减少代码。