對於Android Studio項目,我的.gitignore應該是什麼?



Answers

在我的普通Android .gitignore的基礎上 ,在閱讀了Intellij IDEA網站上的文檔並閱讀StackOverflow上的帖子後,我構建了以下文件:

# 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)。

Question

對於Android Studio項目,我的.gitignore應包含哪些文件?

我已經看到幾個例子都包含.iml但IntelliJ文檔說.iml必須包含在你的源代碼管理中。




github.com/github/gitignore is awesome collection

Android.gitignore

# 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



    ### 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



Github maintains useful gitignore items for various kinds of projects. Here is the list of useful gitignore items for android projects.

# 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

Android Gitignore in github




從Android Studio開始,0.8.4 .gitignore文件在啟動新項目時自動生成。 默認情況下,它包含:

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

我同意這個聲明,但是我修改了這個文件來改變/構建到build /(這將包括/ build和/ app / build)所以我最終沒有得到我的存儲庫中app / build中的所有文件。

另請注意,如果從Eclipse導入項目,則不會復制.gitignore,也不會為您“自動”創建.gitignore。




基本上任何自動重新生成的文件。

一個好的測試是克隆你的repo,看看Android Studio是否能夠立即解釋和運行你的項目(生成缺少的東西)。
如果沒有,找到缺少的東西,並確保它被忽略,但添加到repo。

話雖這麼說,你可以舉例說明現有的.gitignore文件,比如Android文件。

# 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/



對於Android Studio 3.0項目,請使用以下內容:

的.gitignore

.gradle
.idea
*.iml
gradle.properties
local.properties
.DS_Store
build

Gradle項目文件夾

在存儲庫克隆之後,您的(Gradle)項目文件夾中唯一應該是這種結構(至少對於我到目前為止遇到的用例):

/app
/gradle
.gitignore
build.gradle
build.properties
gradlew
gradle.bat
settings.gradle



我不同意所有這些答案。 以下配置適用於我們組織的應用程序。

我忽略了:

  • /build
  • /.idea (可能有例外,請參閱dalewking答案中的評論)
  • *.iml
  • local.properties

我想幾乎每個人都同意/build

我厭倦了不斷看到有關Gradle在/.idea創建或刪除的各種library.xml文件的消息。 build.gradle將在首次簽出項目時在開發人員的本地運行,那麼為什麼需要對這些XML文件進行版本化? 當開發人員使用Check out from Version Control創建項目時,Android Studio還會生成其餘的/.idea ,那麼為什麼該文件夾中的任何內容都需要進行版本化?

如果*.iml是版本化的,則新用戶必須將項目命名為與提交時完全相同。 既然這也是一個生成的文件,為什麼它首先出現呢?

local.properties文件指向SDK的文件系統上的絕對路徑,因此絕對不應對其進行版本控制。

編輯1 :添加.gradle忽略不應該版本化的gradle緩存內容(感謝Vasily Makarov )。

編輯2 :添加.DS_Store現在我正在使用Mac。 此文件夾是Mac特定的,不應進行版本控制。

附加說明 :您可能還希望在構建發布版本時添加一個目錄以放置簽名密鑰。

複製/粘貼方便

.gradle
/build
/.idea
*.iml
local.properties
.DS_Store 



從Android Studio開始,0.8.4 .gitignore文件在啟動新項目時自動生成。 默認情況下,它包含:

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build



To circumvent the import of all files, where Android Studio ignores the "Ignored Files" list, but still leverage Android Studio VCS, I did the following: This will use the "Ignored Files" list from Android Studio (after import! not during) AND avoid having to use the cumbersome way Tortoise SVN sets the svn:ignore list.

  1. Use the Tortoise SVN repository browser to create a new project folder directly in the repository.
  2. Use Tortoise SVN to checkout the new folder over the top of the folder you want to import. You will get a warning that the local folder is not empty. Ignore the warning. Now you have a versioned top level folder with unversioned content.
  3. Open your project from the local working directory. VCS should now be enabled automatically
  4. Set your file exceptions in File -> Settings -> Version Control -> Ignored Files
  5. Add files to SVN from Android Studio: select 'App' in Project Structure -> VCS -> Add to VCS (this will add all files, except "Ignored Files")
  6. Commit Changes

Going forward, "Ignored Files" will be ignored and you can still manage VCS from Android Studio.

Cheers, -Joost




使用Android Studio 3.0進行測試

您可能需要安裝.ignore插件。

您可以為Android自動生成.gitignore文件。 右鍵單擊文件夾並按照

然後從左側面板中選擇Android,然後單擊Generate

Android Studio將生成.gitignore文件,其中包含需要忽略的所有文件。

摘自http://menukanows.com/how-to-add-gitignore-file-in-android-project/




對於Android Studio,在版本控制中需要保存的唯一文件是使用gradle從命令行構建應用程序所需的文件。 所以你可以忽略:

  • * .iml
  • 。理念
  • 建立

但是,如果保存任何IDE設置(例如自定義代碼樣式設置),它們將保存在.idea文件夾中。 如果您希望在版本控制中進行這些更改,那麼您也可以保存IDEA文件(* .iml和.idea)。




為了獲得更好的想法,您只需要以下文件即可

  • 應用
  • 的build.gradle
  • settings.gradle

您可以將其他所有內容放在.gitignore文件中。 您的所有應用更改主要位於這些文件和文件夾中。 您在基本項目中看到的其餘部分是gradle構建文件或Android Studio配置文件。

如果您使用的是Android Studio,則可以使用“導入項目”來成功構建項目。 或者,您可以使用命令行構建,請按照使用Gradle構建Android項目




我支持提交.idea文件夾(不包括workspace.xmltasks.xml )。 但我開始得出結論,應該忽略.iml文件。

這是問題:

例如,在一個名為“foo”的目錄中打開一個項目,你將得到foo.iml並且一切看起來都很好。 問題是,如果我只是在嘗試在Android Studio中打開項目時將目錄重命名為foo2(或將其克隆到另一個目錄名稱),您將獲得三件事:

  • 一個名為foo2.iml的新iml文件
  • 您的Android項目的iml文件將更改為現在指向foo2作為其父項
  • .idea / modules.xml將為foo2.iml添加一行,因此它既有舊的iml文件又有新目錄的文件

當項目存儲在不同的目錄中時,我無法阻止Android Studio執行此iml文件生成。 將它們添加到源代碼控制將導致問題。 因此我想也許我們應該忽略* .iml文件和.idea/modules.xml




Links