在Android开发中,哪些文件应该提交到存储库?

在Android开发中,哪些文件应该提交到存储库?,android,Android,Android项目中的哪些文件应提交到版本控制存储库?哪些文件不应提交 现在,my.gitignore文件由以下几行组成: # Android generated files # ########################### android.keystore local.properties bin/ gen/ libs/ obj/ # OS generated files # ###################### .DS_Store* ehthumbs.db Icon? T

Android项目中的哪些文件应提交到版本控制存储库?哪些文件不应提交

现在,my.gitignore文件由以下几行组成:

# Android generated files #
###########################
android.keystore
local.properties
bin/
gen/
libs/
obj/

# OS generated files #
######################
.DS_Store*
ehthumbs.db
Icon?
Thumbs.db

# Eclipse generated files #
###########################
.settings/org.eclipse.jdt.core.prefs

我遗漏了什么吗?

一般的经验法则是不要将任何可以重新生成的文件提交到存储库中。话虽如此,您可能还想将
项目.properties
文件添加到
.gitignore
(如果存在)。

不要添加bin文件夹和gen文件夹。它们不是您生成的源的一部分。以后请记住,您只添加构建和运行项目所需的文件,而二进制文件和生成的文件则不是


然而,如果您没有使用任何工具,如ivy或maven,您可能希望您的lib文件夹显示出来。通常,当您使用库项目时,还需要提交它

GitHub在上维护一个正式的推荐.gitignore文件列表

对于Android,你可以找到它

或者只是复制/粘贴:

# Built application files
*.apk
*.aar
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/
#  Uncomment the following line in case you need and you don't have the release build type files in your app
# release/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
.cxx/

# Google Services (e.g. APIs or Firebase)
# google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

# Version control
vcs.xml

# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/

从Android Studio 2.2.2开始(很可能在本版本之前添加),当您创建一个新项目时,Google会为您添加一个默认的.gitignore文件,其中包含以下内容:

*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild

与上述答案稍有不同,因为它还忽略了.idea文件夹,其中往往包含大量文件。

FYI,他没有提交
bin
gen
文件夹。你看到的是他的
.gitignore
文件。我没有说他在这么做,我只是注意到这是我与一个签入所有.o和.pyc文件的供应商打交道时遇到的最糟糕的做法。每次我做一个构建,“git status”都会生成数千行“changed”文件。我们假设文件夹应该进入源代码管理。project.properties不包含重要的项目元数据吗。如果删除它,您将很难重新生成它。@Nilhcem这是一个容易忘记的脆弱的手动步骤,您应该将project.properties作为其他源文件的一部分提交。我的规则是不签入任何由生成过程自动创建的内容。如果您可以将“android更新项目…”放入您的Makefile(或等效文件)中,并在需要时自动创建,则不必签入。另外,请注意:如果有大量的开发人员不一定拥有生成它们的工具,那么也应该签入一些构建工件。例如,如果不是每个人都拥有或能够获得yacc和lex,那么我将签入生成的.c文件。通过TEXINFO创建的文档也是如此。这对于由专有或许可工具生成的编译工件来说是双重的。在
项目.properties的顶部
--“#必须在版本控制系统中检查此文件。”--此文件非常重要,特别是当您使用Android库时,它会维护您拥有的库及其位置。通常,这些库应该包含在源代码中。