vorlage Was sollte in meinem.gitignore für ein Android Studio-Projekt sein?




gitignore vorlage (24)

Hängt davon ab, wie Ihr Projektformat verwaltet wird:

Sie haben zwei Möglichkeiten:

  1. Verzeichnisbasiertes Format (Sie haben einen .idea Ordner, der die projektspezifischen Dateien enthält)
  2. Dateibasiertes Format (Konfigurationsdateien sind .iws und .ipr )

Ref: http://www.jetbrains.com/idea/webhelp/project.html

Dateien, die an die Versionskontrolle übergeben werden, hängen von den oben genannten Faktoren ab:

  1. Schließen Sie den .idea-Ordner zur Versionskontrolle ein, schließen Sie tasks.xml und tasks.xml
  2. Die .ipr Datei für die .iml und alle .iml Moduldateien schließen die .iws Datei aus, da sie benutzerspezifische Einstellungen speichert.

Ref: https://intellij-support.jetbrains.com/entries/23393067

Welche Dateien sollten in meinem .gitignore für ein Android Studio-Projekt enthalten sein?

Ich habe mehrere Beispiele gesehen, die alle .iml aber IntelliJ-Dokumente sagen, dass .iml in Ihrer Quellcodeverwaltung .iml muss.


Mein Rat wäre auch, den .idea-Ordner nicht zu ignorieren.

Ich habe ein Git-basiertes Eclipse-Projekt in Android Studio importiert und das ging gut. Später wollte ich dieses Projekt mit Git (wie beim ersten Mal) auf eine andere Maschine mit Android Studio importieren, aber das hat nicht funktioniert. Android Studio hat zwar alle Dateien geladen, konnte das Projekt jedoch nicht als Projekt "sehen". Ich konnte nur Git-Dateien öffnen.

Beim Importieren des Projekts zum ersten Mal (von Eclipse in Android Studio) wurde mein altes .gitignore überschrieben und das neue sah folgendermaßen aus:

  • .idea / .name
  • .idea / compiler.xml
  • .idea / copyright / profile_settings.xml
  • .idea / encodings.xml
  • .idea / libraries / libs.xml
  • .idea / misc.xml
  • .idea / modules.xml
  • .idea / bereiche / scope_settings.xml
  • .idea / vcs.xml
  • .idea / workspace.xml

Also habe ich versucht, einen leeren Gitignore zu benutzen und jetzt hat es funktioniert. Das andere Android Studio könnte die Dateien und das Projekt laden. Ich denke, einige Dateien sind für Git und Import nicht wichtig (profiles_settings.xml) , aber ich bin nur froh, dass es funktioniert hat.


.gitignore from AndroidRate library

# 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


Aufbauend auf meinem normalen Android .gitignore , und nachdem ich die Dokumentation auf der Intellij IDEA Website durchgelesen und Posts auf gelesen habe, habe ich die folgende Datei erstellt:

# 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

Beachten Sie auch, dass der Abschnitt zum Erstellen nativer Dateien , wie bereits erwähnt, in erster Linie nützlich ist, wenn Sie Ihren eigenen nativen Code mit dem Android NDK erstellen. Wenn Sie andererseits eine Bibliothek eines Drittanbieters verwenden, die diese Dateien enthält, möchten Sie diese Zeilen (* .o und * .so) möglicherweise aus Ihrem .gitignore entfernen.


Ab Android Studio 0.8.4. Gitignore-Datei wird automatisch beim Start eines neuen Projekts generiert. Standardmäßig enthält es:

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

Ich stimme dieser Aussage zu, aber ich modifiziere diese Datei, um sie zu ändern / zu bauen / (Dies schließt / build und / app / build) ein. Ich habe also nicht alle Dateien in app / build in meinem Repository.

Beachten Sie auch, dass beim Importieren eines Projekts aus Eclipse das .gitignore nicht kopiert oder "automatisch" für Sie erstellt wird.


Stand 7/2015:

Hier ist die definitive Quelle von JetBrains

Verzeichnisbasiertes Projektformat (.idea-Verzeichnis)

Dieses Format wird standardmäßig von allen aktuellen IDE-Versionen verwendet. Hier ist was du teilen musst:

  • Alle Dateien im Verzeichnis .idea im Projektstamm mit Ausnahme der Dateien tasks.xml und tasks.xml , in denen benutzerspezifische Einstellungen gespeichert sind
  • Alle .iml Moduldateien, die sich in verschiedenen Modulverzeichnissen befinden können (gilt für IntelliJ IDEA)

Seien Sie vorsichtig beim Teilen des Folgenden:

  • Android-Artefakte, die einen signierten Build erzeugen (Keystore-Passwörter enthalten)
  • In IDEA 13 und früheren dataSources.ids kann datasources.xml Datenbankkennwörter enthalten. IDEA 14 löst dieses Problem .

Sie können Folgendes nicht teilen:

  • Gradle.xml-Datei, siehe diese Diskussion
  • Benutzerwörterbuchordner (um Konflikte zu vermeiden, wenn ein anderer Entwickler denselben Namen hat)
  • XML-Dateien unter .idea/libraries falls sie vom Gradle- Projekt generiert werden

Legacy-Projektformat ( .ipr / .iml / .iws Dateien)

  • .ipr die .iml .ipr und alle .iml Moduldateien frei. .iws Sie die .iws Datei nicht .iws , da sie benutzerspezifische Einstellungen speichert

Während diese Anweisungen für IntelliJ IDEA gelten, gelten sie zu 100% für Android Studio.

Hier ist ein .gitignore Snippet, das alle oben genannten Regeln enthält:

# Android Studio / IntelliJ IDEA 
*.iws
.idea/libraries
.idea/tasks.xml
.idea/vcs.xml
.idea/workspace.xml

Ich bin koscher mit dem Hinzufügen der .iml-Dateien und Intellij Sez, um den .idea-Ordner hinzuzufügen, aber idea / workspace.xml und .idea / tasks.xml zu ignorieren, aber was ist mit .idea / libraries /?

Ich sehe nicht, wie es sinnvoll ist, dies hinzuzufügen. Es hat eine Liste von XML-Dateien, die Bibliotheken auflisten, von denen das Android Studio-Projekt wissen sollte. Diese sollten stattdessen von build.gradle definierten Abhängigkeiten kommen - keine IDE-Projektdatei.

Auch der Inhalt einer dieser Dateien sieht so aus:

<component name="libraryTable">
    <CLASSES>
       <root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.example/example/etc...jar!"/>

Es macht keinen Sinn, dies zu tun. Was ist, wenn der Benutzer ein anderes Home-Verzeichnis für Gradle angegeben hat oder wenn er eine andere Gradle-Version verwendet, wird der Pfad unter .gradle/caches/artifacts-xxx für sie unterschiedlich sein (dh artifacts- die am Ende angehängte Zahl wird) beziehen sich auf die Version der Version, die Sie verwenden.) Diese Pfade sind nicht universell, und doch ist der Rat, all das zu überprüfen?


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

Ab Android Studio .gitignore Datei wird automatisch beim Start eines neuen Projekts generiert. Standardmäßig enthält es:

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

Ich unterstütze die Übertragung von. IDEA-Ordner (außer tasks.xml und tasks.xml ). Aber ich fange an zu der Schlussfolgerung zu kommen, dass .iml-Dateien ignoriert werden sollten.

Hier ist das Problem:

Öffnen Sie ein Projekt in einem Verzeichnis namens "foo" zum Beispiel und Sie erhalten foo.iml und das alles scheint gut und gut. Das Problem ist, dass wenn ich das Verzeichnis einfach in foo2 umbenenne (oder klicke es in einen anderen Verzeichnisnamen), wenn Sie versuchen, das Projekt in Android Studio zu öffnen, Sie drei Dinge bekommen:

  • Eine neue IMI-Datei namens foo2.iml
  • Die IMI-Datei für Ihr Android-Projekt wird so geändert, dass sie nun auf foo2 als übergeordnetes Element verweist
  • In .idea / modules.xml wird eine Zeile für foo2.iml hinzugefügt, so dass sowohl die alte als auch die für das neue Verzeichnis vorhanden ist

Ich kann keine Möglichkeit finden, Android Studio daran zu hindern, diese IML-Dateigenerierung durchzuführen, wenn das Projekt in einem anderen Verzeichnis gespeichert wird. Wenn Sie sie der Quellcodeverwaltung hinzufügen, kann dies zu Problemen führen. Daher denke ich, dass wir * .iml-Dateien und .idea/modules.xml ignorieren .idea/modules.xml


Auf Android Studio 3.0 aktualisiert Bitte teilen Sie fehlende Elemente in Kommentaren.

Eine späte Antwort aber keine der Antworten hier und here war direkt auf das Geld für uns ...

Also, hier ist unsere Gitignore-Datei:

#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

Seit Android Studio 2.2 und bis zu 3.0 werden neue Projekte mit dieser Gitignore-Datei erstellt:

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

Veraltet - für ein älteres Projektformat fügen Sie diesen Abschnitt Ihrer Gitignore-Datei hinzu:


/*/out
/*/*/build
/*/*/production
*.iws
*.ipr
*~
*.swp

Diese Datei sollte sich im Stammordner des Projekts und nicht im Modulordner des Projekts befinden.

Notizen bearbeiten:

  1. Seit der Version 0.3+ scheint es, dass Sie * .iml- und build.gradle- Dateien committen und pushen können. Wenn Ihr Projekt auf Gradle basiert: Im neuen Öffnen / Importieren-Dialog sollten Sie das Kontrollkästchen "use auto import" aktivieren und das Optionsfeld "use default gradle wrapper (recommended)" markieren. Alle Pfade sind jetzt relativ, wie @ George vorgeschlagen hat.

  2. Aktualisierte Antwort nach @ 128KB angefügte Quelle und @Skela Vorschläge


I had problems with ignoring build files, but this seems to work :-)

# 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


Verwenden Sie für Android Studio 3.0-Projekte Folgendes:

.gitignore

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

Gradle Projektordner

Das einzige, was nach dem Klonen des Repository in Ihrem (Gradle) Projektordner sein sollte, ist diese Struktur (zumindest für die Anwendungsfälle, die ich bisher gefunden habe):

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

Es empfiehlt sich, die .gitignore-Liste während der Entwicklungszeit zusammenzufassen, um unbekannte Nebeneffekte zu vermeiden, wenn die Versionskontrolle aus irgendeinem Grund aufgrund der vordefinierten (Kopieren / Einfügen-) Liste aus irgendeinem Grund nicht funktioniert. Für eines meiner Projekte besteht die Ignorierliste nur aus:

.gradle
.idea
libs
obj
build
*.log

Ich stimme all diesen Antworten nicht zu. Die folgende Konfiguration funktioniert hervorragend für die App unserer Organisation.

Ich ignoriere:

  • /build
  • /.idea (mit möglichen Ausnahmen, siehe Kommentare in Dalewking's Antwort )
  • *.iml
  • local.properties

Ich denke, fast alle stimmen zu /build .

Ich habe es /.idea ständig Nachrichten über die verschiedenen library.xml Dateien zu sehen, die Gradle in /.idea erstellt oder löscht. Die build.gradle wird beim ersten Auschecken des Projekts auf dem lokalen build.gradle der Entwickler ausgeführt. Warum müssen diese XML-Dateien also versioniert werden? Android Studio generiert auch den Rest von /.idea wenn ein Entwickler ein Projekt mithilfe von Check out from Version Control Warum muss also in diesem Ordner eine Check out from Version Control werden?

Wenn die *.iml versioniert ist, muss ein neuer Benutzer das Projekt genau so benennen, wie es beim *.iml der *.iml war. Da dies auch eine generierte Datei ist, warum sollte sie überhaupt zuerst veröffentlicht werden?

Die Dateien local.properties auf einen absoluten Pfad im Dateisystem für das SDK, daher sollte es definitiv nicht versioniert werden.

Edit 1 : Hinzugefügt .gradle , um die Gradle Caching-Sachen zu ignorieren, die nicht versioniert werden sollten (danke Vasily Makarov ).

Edit 2 : Hinzugefügt. .DS_Store jetzt, dass ich Mac benutze. Dieser Ordner ist Mac-spezifisch und sollte nicht versioniert werden.

Zusätzlicher Hinweis : Sie möchten wahrscheinlich auch ein Verzeichnis hinzufügen, in das Sie Ihre Signaturschlüssel beim Erstellen einer Release-Version einfügen können.

Zum Kopieren / Einfügen :

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

Compilation:

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

Um eine bessere Idee zu bekommen, brauchen Sie nur die folgenden Dateien

  • App
  • build.gradle
  • settings.gradle

Sie könnten alles andere in die .gitigore-Datei einfügen. Alle Ihre App-Änderungen liegen hauptsächlich in diesen Dateien und Ordnern. Der Rest, den Sie in einem Basisprojekt sehen, sind große Build-Dateien oder Android Studio-Konfigurationsdateien.

Wenn Sie Android Studio verwenden, können Sie "Projekt importieren" verwenden, um das Projekt erfolgreich zu erstellen. Alternativ können Sie mithilfe der Befehlszeile Build android projects with Gradle erstellen .


Ich füge Github .gitignore Dateien zusammen

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

Please read: JetBrains Support: How to manage projects under Version Control Systems


This official documentation from JetBrains Support says the following should be included:

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

It also gives other recommendations of things to be careful about.


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

Grundsätzlich jede Datei, die automatisch neu generiert wird.

Ein guter Test besteht darin, Ihr Repo zu klonen und zu prüfen, ob Android Studio Ihr Projekt sofort interpretieren und ausführen kann (wodurch fehlende Inhalte generiert werden).
Wenn nicht, suchen Sie, was fehlt, und stellen Sie sicher, dass es nicht ignoriert wird, sondern dem Repo hinzugefügt wird.

.gitignore können Sie Beispiele für vorhandene .gitignore Dateien, wie die Android- Datei, verwenden.

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

Ich weiß, das ist ein altes Thema und es gibt sicherlich viele Möglichkeiten, aber ich bevorzuge gibo von Simon Whitaker. Es ist super einfach zu bedienen, plattformübergreifend (Mac, * Nix und Windows) und verwendet das Github github.com/github/gitignore Repo, so dass es (grundsätzlich) immer auf dem neuesten Stand ist.

Stellen Sie sicher, dass Ihr lokaler Cache auf dem neuesten Stand ist:

    $ gibo --upgrade
    From https://github.com/github/gitignore
     * branch            master     -> FETCH_HEAD
    Current branch master is up to date.

Suchen Sie nach der Sprache / Technologie, die Sie benötigen:

    $ gibo --search android
    Android

Zeigen Sie die .gitignore-Datei an:

    $ 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

Fügen Sie es nun der .gitigore-Datei Ihres Projekts hinzu:

    $ gibo Android >> .gitignore

(Stellen Sie sicher, dass Sie >> zum Anhängen an die .gitigore-Datei Ihres Projekts verwenden; eine > überschreibt sie - wie ich es schon oft bei einem Unfall getan habe!)

Ich weiß, dass dies nicht die genaue Frage des OP beantwortet, aber die Verwendung von Gibo macht es so, dass Sie nicht mehr viel über die "Frage" nachdenken müssen! .. es ist schön! ;)





gitignore