Android Studio 项目的 .gitignore 应该怎么写
Android Studio 项目的 .gitignore 核心项:.gradle/、build/、local.properties、.idea/(或按需保留部分)、.iml、.keystore 签名文件、.apk/aab 产物、.cxx/、captures/。直接套用 GitHub 官方 Android 模板最稳妥。
直接以 GitHub 官方的 Android .gitignore 模板为基础即可,核心思想:排除构建产物、本地环境配置、IDE 个人设置、签名密钥——这些要么每个人机器上不同,要么根本不该进版本库。
推荐模板
# Gradle 与构建产物
.gradle/
build/
*/build/
.cxx/
*.apk
*.aab
*.ap_
# 本地配置(含 SDK 路径,每人不同)
local.properties
# Android Studio / IntelliJ
.idea/
*.iml
*.iws
*.ipr
.navigation/
captures/
# 签名密钥(绝不能进仓库!)
*.keystore
*.jks
*.pem
key.properties
# 系统文件
.DS_Store
Thumbs.db
# 其他
*.log
.externalNativeBuild/
关于 .idea/ 的争议
两派做法:
- 全部忽略(上面模板的做法):个人配置不进仓库,最干净;
- 部分保留:有些团队会提交
.idea/codeStyles/、.idea/inspectionProfiles/统一代码风格,忽略其余。
选哪种都可以,团队统一即可。新项目建议全忽略,代码风格用 ktlint/detekt 配置文件承载更可靠。
特别提醒
- 签名文件绝不能提交:keystore 泄露等于应用身份泄露。用 CI 的 secrets 管理签名材料;
- google-services.json:Firebase 配置文件,多数团队选择提交(其 API key 设计为公开),安全要求高的项目用 CI 注入;
- 已误提交的文件记得
git rm --cached后再补 gitignore。
常见问题(FAQ)
Q:模板从哪里来最权威?
GitHub 的 github/gitignore 仓库维护各语言模板,新建仓库时选择 "Add .gitignore: Android" 自动生成;gitignore.io 网站也可组合多个技术栈生成。
Q:local.properties 为什么必须忽略?
它记录你本机 Android SDK 的绝对路径,换台机器就是错的;SDK 路径应交给 ANDROID_HOME 环境变量。
Q:library 模块和 app 模块的 gitignore 要分开吗?
不需要。根目录一份 .gitignore 即可覆盖所有模块(build/ 模式会匹配任意层级的 build 目录)。