What should be in my .gitignore for an Android Studio project?
对于Android Studio项目,我的
我看过几个都包含
已更新至Android Studio 3.0
请在评论中分享遗失的项目。
一个迟到的答案,但这里和这里的答案都没有对我们来说是正确的...
所以,这是我们的gitignore文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files bin/ gen/ # Local configuration file (sdk path, etc) local.properties # Windows thumbnail db Thumbs.db # OSX files .DS_Store # Android Studio *.iml .idea #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. .gradle build/ .navigation captures/ output.json #NDK obj/ .externalNativeBuild |
从Android Studio 2.2到3.0版本,使用此gitignore文件创建了新项目:
1 2 3 4 5 6 7 8 9 | *.iml .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures .externalNativeBuild |
不推荐使用 - 对于较旧的项目格式,请将此部分添加到您的gitignore文件中:
1 2 3 4 5 6 7 | /*/out /*/*/build /*/*/production *.iws *.ipr *~ *.swp |
此文件应位于项目的根文件夹中,而不是位于项目的模块文件夹中。
编辑笔记:
从版本0.3+开始,您似乎可以提交并推送* .iml和build.gradle文件。如果您的项目基于Gradle:在新的打开/导入对话框中,您应该选中
根据@ 128KB附加源和@Skela建议更新了答案
基于我的普通Android .gitignore,在阅读了Intellij IDEA网站上的文档并阅读StackOverflow上的帖子后,我构建了以下文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # built native files (uncomment if you build your own) # *.o # *.so # generated files bin/ gen/ # Ignore gradle files .gradle/ build/ # Local configuration file (sdk path, etc) local.properties # Proguard folder generated by Eclipse proguard/ # Eclipse Metadata .metadata/ # Mac OS X clutter *.DS_Store # Windows clutter Thumbs.db # Intellij IDEA (see https://intellij-support.jetbrains.com/entries/23393067) .idea/workspace.xml .idea/tasks.xml .idea/datasources.xml .idea/dataSources.ids |
另请注意,正如所指出的,当您使用Android NDK构建自己的本机代码时,构建的本机文件部分非常有用。另一方面,如果您使用的是包含这些文件的第三方库,您可能希望从.gitignore中删除这些行(* .o和* .so)。
2015年7月更新:
以下是JetBrains的最终消息来源
基于目录的项目格式(.idea目录)
默认情况下,所有最新的IDE版本都使用此格式。以下是您需要分享的内容:
-
项目根目录下
.idea 目录下的所有文件,但存储用户特定设置的workspace.xml 和tasks.xml 文件除外 -
所有
.iml 模块文件都可以位于不同的模块目录中(适用于IntelliJ IDEA)
分享以下内容时要小心:
- 产生签名版本的Android工件(将包含密钥库密码)
-
在IDEA 13及更早版本
dataSources.ids 中,datasources.xml 可以包含数据库密码。 IDEA 14解决了这个问题。
您可以考虑不要分享以下内容:
- gradle.xml文件,请参阅此讨论
- 用户词典文件夹(以避免在其他开发人员具有相同名称时发生冲突)
-
它们是从Gradle项目生成的
.idea/libraries 下的XML文件
旧版项目格式(
-
共享项目
.ipr 文件和所有.iml 模块文件,不要共享.iws 文件,因为它存储用户特定的设置
虽然这些说明适用于IntelliJ IDEA,但它们对于Android Studio来说却是100%真实的。
这是一个包含以上所有规则的
1 2 3 4 5 6 | # Android Studio / IntelliJ IDEA *.iws .idea/libraries .idea/tasks.xml .idea/vcs.xml .idea/workspace.xml |
我不同意所有这些答案。以下配置适用于我们组织的应用程序。
我忽略了:
-
/build -
/.idea (可能有例外,请参阅dalewking答案中的评论) -
*.iml -
local.properties
我想几乎所有人都同意
我厌倦了不断看到有关Gradle在
如果
编辑1:添加
编辑2:添加
附加说明:您可能还希望在构建发布版本时添加一个目录以放置签名密钥。
复制/粘贴方便:
1 2 3 4 5 6 | .gradle /build /.idea *.iml local.properties .DS_Store |
我用这个.gitignore。我发现它在:http://th4t.net/android-studio-gitignore.html
1 2 3 4 5 6 7 8 9 10 11 | *.iml *.iws *.ipr .idea/ .gradle/ local.properties */build/ *~ *.swp |
对于Android Studio,在版本控制中需要保存的唯一文件是使用gradle从命令行构建应用程序所需的文件。所以你可以忽略:
- * .iml
- 。理念
- 建立
但是,如果保存任何IDE设置(例如自定义代码样式设置),它们将保存在.idea文件夹中。如果您希望在版本控制中进行这些更改,那么您也可以保存IDEA文件(* .iml和.idea)。
Android Studio 3.4
如果使用Android Studio创建Gradle项目,
的.gitignore
1 2 3 4 5 6 7 8 9 10 11 12 13 | *.iml .gradle /local.properties /.idea/caches /.idea/libraries /.idea/modules.xml /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml .DS_Store /build /captures .externalNativeBuild |
我建议忽略完整的".idea"目录,因为它包含特定于用户的配置,对构建过程没有任何重要意义。
Gradle项目文件夹
在存储库克隆之后,您的(Gradle)项目文件夹中唯一应该是这种结构(至少对于我到目前为止遇到的用例):
1 2 3 4 5 6 7 8 9 | app/ .git/ gradle/ build.gradle .gitignore gradle.properties gradlew gradle.bat settings.gradle |
建议签入gradle包装器脚本(参见此处)。
To make the Wrapper files available to other developers and execution environments you’ll need to check them into version control.
我的建议也是不要忽略.idea文件夹。
我已经将一个基于Git的Eclipse项目导入Android Studio,并且运行良好。后来,我想用Git(就像第一次)将这个项目导入另一台安装了Android Studio的机器,但是没有用。 Android Studio确实加载了所有文件,但无法将项目"视为"项目。我只能打开Git文件。
在第一次导入项目时(从Eclipse到Android Studio),我的旧.gitignore被覆盖了,新的看起来像这样:
- .idea / .NAME
- .idea / compiler.xml
- .idea /版权/ profiles_settings.xml
- .idea / encodings.xml
- .idea /库/ libs.xml
- .idea / misc.xml
- .idea / modules.xml
- .idea /范围/ scope_settings.xml
- .idea / vcs.xml
- .idea / workspace.xml
所以,我试图使用一个空的gitignore,现在它工作了。另一个Android Studio可以加载文件和项目。我猜有些文件对于Git和导入来说并不重要
这是通过此处生成
无需添加到源控件以下任何一项:
1 2 3 4 5 | .idea/ .gradle/ *.iml build/ local.properties |
因此,您可以相应地配置hgignore或gitignore。
开发人员第一次克隆源控件时可以:
就这样
PS:Android Studio将通过maven获取gradle插件,假设您的build.gradle看起来与此类似:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.12.2' } } allprojects { repositories { mavenCentral() } } |
Android studio将生成.idea文件夹的内容(包括workspace.xml,由于生成它而不应该在源代码管理中)和.gradle文件夹。
这种方法对Eclipse非常友好,因为源代码控制对Android Studio一无所知。 Android Studio只需要build.gradle来导入项目并生成其余项目。
我支持提交.idea文件夹(不包括
这是问题:
例如,在一个名为"foo"的目录中打开一个项目,你将得到foo.iml并且一切看起来都很好。问题是,如果我只是在尝试在Android Studio中打开项目时将目录重命名为foo2(或将其克隆到另一个目录名称),您将获得三件事:
- 一个名为foo2.iml的新iml文件
- 您的Android项目的iml文件将更改为现在指向foo2作为其父项
- .idea / modules.xml将为foo2.iml添加一行,因此它既有旧的iml文件又有新目录的文件
当项目存储在不同的目录中时,我无法阻止Android Studio执行此iml文件生成。将它们添加到源代码控制将导致问题。因此,我想也许我们应该忽略* .iml文件和
使用Android Studio 3.0进行测试
您可能需要安装.ignore插件。
您可以为Android自动生成.gitignore文件。
右键单击文件夹并按照
然后从左侧面板中选择Android,然后单击Generate
Android Studio将生成.gitignore文件,其中包含需要忽略的所有文件。
摘自http://menukanows.com/how-to-add-gitignore-file-in-android-project/
取决于您的项目格式的维护方式:
您有两种选择:
项目特定文件)
参考:
http://www.jetbrains.com/idea/webhelp/project.html
提交版本控制的文件取决于以上内容:
参考:
https://intellij-support.jetbrains.com/entries/23393067
基本上任何自动重新生成的文件。
一个好的测试是克隆您的仓库并查看Android Studio是否能够立即解释并运行您的项目(生成缺少的内容)。
如果没有,找到缺少的东西,并确保它不被忽略,但添加到repo。
话虽这么说,你可以举例说明现有的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files bin/ gen/ # Local configuration file (sdk path, etc) local.properties # Eclipse project files .classpath .project # Proguard folder generated by Eclipse proguard/ # Intellij project files *.iml *.ipr *.iws .idea/ |
我更喜欢添加.iml文件和Intellij sez来添加.idea文件夹但忽略.idea / workspace.xml和.idea / tasks.xml,但是.idea / libraries /?
我没有看到添加它有多大意义。它有一个XML文件列表,列出了Android Studio项目应该知道的库。这些应该来自build.gradle定义的依赖项 - 而不是IDE项目文件。
其中一个文件的内容如下所示:
1 2 3 | <component name="libraryTable"> <CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.example/example/etc...jar!"/> |
提交这个没有意义。如果用户为gradle指定了不同的主目录,或者如果他们使用不同的gradle版本,那么
从Android Studio开始,0.8.4
默认情况下,它包含:
1 2 3 4 5 6 | .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build |
为了获得更好的想法,您只需要以下文件
- 应用
- 的build.gradle
- settings.gradle
您可以将其他所有内容放在.gitignore文件中。您的所有应用更改主要位于这些文件和文件夹中。您在基本项目中看到的其余部分是gradle构建文件或Android Studio配置文件。
如果您使用的是Android Studio,则可以使用"导入项目"来成功构建项目。或者,您可以使用命令行构建,请按照使用Gradle构建Android项目。
最好在开发时间之前添加.gitignore列表,以防止由于某些原因的预定义(复制/粘贴)列表而导致版本控制由于某种原因无法工作时出现未知的副作用。对于我的一个项目,忽略列表仅包括:
1 2 3 4 5 6 | .gradle .idea libs obj build *.log |
我知道这是一个古老的话题,肯定有很多选择,但我真的更喜欢Simon Whitaker的
确保您的本地缓存是最新的:
1 2 3 4 | $ gibo --upgrade From https://github.com/github/gitignore * branch master -> FETCH_HEAD Current branch master is up to date. |
搜索您需要的语言/技术:
1 2 | $ gibo --search android Android |
显示.gitignore文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $ gibo Android ### Android # Built application files *.apk *.ap_ # Files for the Dalvik VM *.dex # Java class files *.class # Generated files bin/ gen/ # Gradle files .gradle/ build/ # Local configuration file (sdk path, etc) local.properties # Proguard folder generated by Eclipse proguard/ # Log Files *.log |
现在,将它附加到项目的.gitignore文件中:
1 | $ gibo Android >> .gitignore |
(确保使用
我知道这不是回答OP的确切问题,但是使用gibo可以让你几乎不用再考虑"问题"了! .. 这真好! ;)
我合并了Github .gitignore文件
- Android.gitignore
- JetBrains.gitignore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | ### Github Android.gitignore ### # Built application files *.apk *.ap_ # Files for the Dalvik VM *.dex # Java class files *.class # Generated files bin/ gen/ # 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/ ### Github JetBrains.gitignore ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio *.iml ## Directory-based project format: .idea/ # if you remove the above rule, at least ignore the following: # User-specific stuff: # .idea/workspace.xml # .idea/tasks.xml # .idea/dictionaries # Sensitive or high-churn files: # .idea/dataSources.ids # .idea/dataSources.xml # .idea/sqlDataSources.xml # .idea/dynamic.xml # .idea/uiDesigner.xml # Gradle: # .idea/gradle.xml # .idea/libraries # Mongo Explorer plugin: # .idea/mongoSettings.xml ## File-based project format: *.ipr *.iws ## Plugin-specific files: # IntelliJ /out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties |
请阅读:JetBrains支持:如何在版本控制系统下管理项目
Github为各种项目维护有用的gitignore项目。
这是android项目的有用gitignore项目列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | # Built application files *.apk *.ap_ # Files for the ART/Dalvik VM *.dex # Java class files *.class # Generated files bin/ gen/ out/ # 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/libraries # Keystore files *.jks # External native build folder generated in Android Studio 2.2 and later .externalNativeBuild # Google Services (e.g. APIs or Firebase) google-services.json # Freeline freeline.py freeline/ freeline_project_description.json |
github中的Android Gitignore
从Android Studio开始,0.8.4 .gitignore文件在启动新项目时自动生成。默认情况下,它包含:
1 2 3 4 5 6 7 | .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store build/ /captures |
我同意这个陈述,但我修改此文件进行更改
/ build to build /
(这将包括/ build和/ app / build)
所以我最终没有在我的存储库中的app / build中的所有文件。
另请注意,如果从Eclipse导入项目,则不会复制.gitignore,也不会为您"自动"创建.gitignore。
使用gitignore.io提供的api,您可以自动生成。这是直接链接gitignore.io/api/androidstudio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | ### AndroidStudio ### # Covers files to be ignored for android development using Android Studio. # Built application files *.apk *.ap_ # Files for the ART/Dalvik VM *.dex # Java class files *.class # Generated files bin/ gen/ out/ # Gradle files .gradle .gradle/ build/ # Signing files .signing/ # Local configuration file (sdk path, etc) local.properties # Proguard folder generated by Eclipse proguard/ # Log Files *.log # Android Studio /*/build/ /*/local.properties /*/out /*/*/build /*/*/production captures/ .navigation/ *.ipr *~ *.swp # Android Patch gen-external-apklibs # External native build folder generated in Android Studio 2.2 and later .externalNativeBuild # NDK obj/ # IntelliJ IDEA *.iml *.iws /out/ # User-specific configurations .idea/caches/ .idea/libraries/ .idea/shelf/ .idea/workspace.xml .idea/tasks.xml .idea/.name .idea/compiler.xml .idea/copyright/profiles_settings.xml .idea/encodings.xml .idea/misc.xml .idea/modules.xml .idea/scopes/scope_settings.xml .idea/dictionaries .idea/vcs.xml .idea/jsLibraryMappings.xml .idea/datasources.xml .idea/dataSources.ids .idea/sqlDataSources.xml .idea/dynamic.xml .idea/uiDesigner.xml .idea/assetWizardSettings.xml # OS-specific files .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # Legacy Eclipse project files .classpath .project .cproject .settings/ # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.war *.ear # virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml) hs_err_pid* ## Plugin-specific files: # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Mongo Explorer plugin .idea/mongoSettings.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties ### AndroidStudio Patch ### !/gradle/wrapper/gradle-wrapper.jar # End of https://www.gitignore.io/api/androidstudio |
汇编:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files bin/ gen/ # Gradle files .gradle/ build/ /*/build/ # Local configuration file (sdk path, etc) local.properties # Proguard folder generated by Eclipse proguard/ # Log Files *.log # Windows thumbnail db Thumbs.db # OSX files .DS_Store # Eclipse project files .classpath .project # Android Studio *.iml .idea #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. .gradle build/ # Intellij project files *.iml *.ipr *.iws .idea/ |
为了避免导入所有文件,Android Studio忽略"忽略的文件"列表,但仍然使用Android Studio VCS,我执行了以下操作:
这将使用Android Studio中的"忽略文件"列表(导入后!不在此期间)并避免使用Tortoise SVN设置svn:ignore列表的繁琐方式。
展望未来,"忽略的文件"将被忽略,您仍然可以从Android Studio管理VCS。
干杯,
-Joost
JetBrains支持部门的官方文档说明应包括以下内容:
1 2 3 | All files under .idea directory except workspace.xml and tasks.xml because they store specific user settings All the *.iml files that can be located in different module directories |
它还提供了其他需要注意的事项建议。
来自AndroidRate库的.gitignore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | # Copyright 2017 - 2018 Vorlonsoft LLC # # Licensed under The MIT License (MIT) # Built application files *.ap_ *.apk # Built library files *.aar *.jar # Built native files *.o *.so # Files for the Dalvik/Android Runtime (ART) *.dex *.odex # Java class files *.class # Generated files bin/ gen/ out/ # Gradle files .gradle/ build/ # Local configuration file (sdk/ndk path, etc) local.properties # Windows thumbnail cache Thumbs.db # macOS .DS_Store/ # Log Files *.log # Android Studio .navigation/ captures/ output.json # NDK .externalNativeBuild/ obj/ # IntelliJ ## User-specific stuff .idea/**/tasks.xml .idea/**/workspace.xml .idea/dictionaries ## Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.local.xml .idea/**/dynamic.xml .idea/**/sqlDataSources.xml .idea/**/uiDesigner.xml ## Gradle .idea/**/gradle.xml .idea/**/libraries ## VCS .idea/vcs.xml ## Module files *.iml ## File-based project format *.iws |
https://github.com/github/gitignore是一个很棒的集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | # Built application files *.apk *.ap_ # Files for the ART/Dalvik VM *.dex # Java class files *.class # Generated files bin/ gen/ out/ # 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 .idea/caches # Keystore files # Uncomment the following line if you do not want to check your keystore files in. #*.jks # External native build folder generated in Android Studio 2.2 and later .externalNativeBuild # 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 |
忽略构建文件时遇到问题,但这似乎有效:-)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files bin/ gen/ # Local configuration file (sdk path, etc) local.properties # Eclipse project files .classpath .project # Android Studio .idea/ .gradle /*/local.properties /*/out /*/*/build /*/*/production *.iml *.iws *.ipr *~ *.swp */build */production */local.properties */out |