本文档提供了有关 Android 特定 gitignore 模式的详细信息,这些模式用于在 Android 开发项目中排除版本控制中不必要的和敏感的文件。它涵盖了 Android gitignore 模板中定义的模式,解释了它们的用途和目标文件类型。有关 iOS 开发 gitignore 模式的信息,请参阅 iOS 开发,有关通用的 JetBrains IDE 模式(Android Studio 基于此),请参阅 JetBrains IDE。
Android 开发通常涉及以下工具和组件,它们会生成各种应从版本控制中排除的文件。
来源: Android.gitignore Global/JetBrains.gitignore
Android gitignore 模板将排除的文件组织成几个类别
| 类别 | 目的 | 示例模式 |
|---|---|---|
| Gradle 构建文件 | 排除构建工件和本地缓存 | .gradle/, build/ |
| 本地配置 | 排除特定于机器的 SDK 路径 | local.properties |
| Android Studio 生成的文件 | 排除 IDE 生成的文件 | captures/, .externalNativeBuild/, .cxx/ |
| IntelliJ/Android Studio 项目文件 | 排除 IDE 项目配置 | *.iml, .idea/ |
| 安全敏感文件 | 排除加密密钥 | *.jks, *.keystore |
| Google 服务 | 排除 API 配置 | google-services.json |
| 性能分析数据 | 排除性能剖析 | *.hprof |
Gradle 构建系统会生成大量文件,这些文件应从版本控制中排除。
.gradle/ Android.gitignore2: 包含 Gradle 依赖缓存、构建缓存和其他临时文件的目录build/ Android.gitignore3: 包含所有构建输出的目录,包括编译后的代码、处理过的资源和 APK 文件这些目录可能会变得非常大,并且包含特定于机器的信息。排除它们可以确保存储库干净,并防止多个开发人员协作时出现冲突。
Android Studio 会生成包含特定于机器的路径的配置文件。
local.properties Android.gitignore6: 包含 Android SDK 在开发者机器上的路径此文件由 Android Studio 根据当前机器的 SDK 位置自动生成。将其包含在版本控制中会导致拥有不同 SDK 安装的其他开发人员产生冲突。
Android Studio 在开发过程中会生成几个目录和文件。
captures/ Android.gitignore12: 包含屏幕录制和性能跟踪.externalNativeBuild/ Android.gitignore13: 包含本地(C/C++)代码的构建文件.cxx/ Android.gitignore14: 包含已编译的本地代码库*.apk Android.gitignore15: Android 应用程序包(已编译应用程序)output.json Android.gitignore16: 包含有关构建输出的元数据这些文件要么是大型二进制文件,要么可以从源代码重新生成,因此不适合进行版本控制。
由于 Android Studio 基于 IntelliJ IDEA,因此需要排除许多特定于 IDE 的文件。
*.iml Android.gitignore19: 定义项目结构的 IntelliJ 模块文件.idea/ Android.gitignore20: 包含 IDE 设置的目录misc.xml Android.gitignore21 deploymentTargetDropDown.xml Android.gitignore22 和 render.experimental.xml Android.gitignore23这些文件包含用户特定的设置和缓存信息,不应在开发者之间共享。
Android gitignore 模板包含 JetBrains gitignore 模板中的一部分模式,主要关注与 Android 开发最相关的模式。
来源: Android.gitignore19-23 Global/JetBrains.gitignore
Android 开发涉及多个安全敏感文件,这些文件绝不应提交到版本控制中。
*.jks Android.gitignore26: 包含签名密钥的 Java KeyStore 文件*.keystore Android.gitignore27: Android KeyStore 文件,包含签名证书google-services.json Android.gitignore30: 包含 Google API 密钥和 Firebase 配置将这些文件暴露在仓库中可能会导致安全漏洞,因为它们包含敏感凭据,如果被未经授权的方访问,可能会被滥用。
来源: Android.gitignore26-27 Android.gitignore30
*.hprof Android.gitignore33: 性能分析时生成的堆栈分析文件这些文件可能非常大,并且特定于调试会话,因此不适合版本控制。
Android Studio 基于 IntelliJ IDEA,因此 Android gitignore 模板和 JetBrains gitignore 模板之间存在一些重叠。Android 模板包含最关键的 IntelliJ 模式,但要更全面地排除 IDE 文件,您可以考虑结合使用这两个模板。
Android 模板中包含的关键 JetBrains 模式
.idea/ 目录 Android.gitignore20*.iml 文件 Android.gitignore19JetBrains 模板中的其他可能相关的模式
.idea/ 目录模式 Global/JetBrains.gitignore5-9 Global/JetBrains.gitignore17-24来源: Android.gitignore19-20 Global/JetBrains.gitignore
在处理 Android 项目时,请考虑以下 gitignore 最佳实践:
根据您的 Android 项目的具体需求,您可能需要添加其他模式,例如:
| 附加组件 | 要添加的模式 |
|---|---|
| Firebase | google-services.json、firebase_options.dart |
| 地图 API | 任何包含 API 密钥的文件 |
| 分析 | 跟踪配置文件 |
| CI/CD | 构建脚本输出和配置 |
来源: Android.gitignore Global/JetBrains.gitignore
Android gitignore 模板提供了排除构建产物、IDE 特定文件、安全敏感信息和调试数据不被版本控制的关键模式。通过将此模板作为起点并根据项目的具体需求进行定制,您可以维护一个干净的、专注于源代码的仓库,而不是包含生成的文件和特定于机器的配置。