Question Que devrait être dans mon .gitignore pour un projet Android Studio?


Quels fichiers devraient être dans mon .gitignore pour un projet Android Studio?

J'ai vu plusieurs exemples qui comprennent tous .iml mais les docs IntelliJ disent que .iml doit être inclus dans votre contrôle de source.


1056
2018-05-24 14:04


origine


Réponses:


Mise à jour vers Android Studio 3.0 Veuillez partager les éléments manquants dans les commentaires.

Une réponse tardive mais aucune des réponses ici et ici était juste sur l'argent pour nous ...

Alors, voici notre fichier gitignore:

#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

Depuis Android Studio 2.2 et jusqu'à 3.0, de nouveaux projets sont créés avec ce fichier gitignore:

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

Déprécié - Pour un format de projet plus ancien, ajoutez cette section à votre fichier gitignore:


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

Ce fichier doit se trouver dans le dossier racine du projet et non dans le dossier du module du projet.

Modifier les notes:

  1. Depuis la version 0.3+, il semble que vous pouvez vous engager et pousser * .iml et build.gradle des dossiers. Si votre projet est basé sur Gradle: dans la nouvelle boîte de dialogue Ouvrir / Importer, vous devez vérifier "use auto import" case à cocher et marquer "use default gradle wrapper (recommended)" bouton radio. Tous les chemins sont maintenant relatifs comme suggéré par @George.

  2. Réponse mise à jour selon @ 128 Ko source attachée et @Skela suggestions


1148
2017-07-23 07:29



Construire sur mon Android normal .gitignore, et après avoir lu la documentation sur le site Web Intellij IDEA et lire les messages sur StackOverflow, j'ai construit le fichier suivant:

# 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

Notez également que, comme indiqué, la fichiers natifs construits section est principalement utile lorsque vous construisez votre propre code natif avec Android NDK. Si, d'un autre côté, vous utilisez une bibliothèque tierce qui inclut ces fichiers, vous pouvez supprimer ces lignes (* .o et * .so) de votre .gitignore.


137
2018-01-10 16:23



Mise à jour 7/2015:

Voici la source définitive de JetBrains


Format de projet basé sur l'annuaire (répertoire .idea)

Ce format est utilisé par toutes les versions récentes de l'IDE par défaut. Voici ce que vous devez partager:

  • Tous les fichiers sous .idea répertoire dans la racine du projet sauf la workspace.xml et tasks.xml fichiers qui stockent les paramètres spécifiques à l'utilisateur
  • Tous les .iml fichiers de module qui peuvent être situés dans différents répertoires de modules (s'applique à IntelliJ IDEA)

Faites attention à propos du partage des éléments suivants:

  • Artefacts Android produisant une construction signée (contenant des mots de passe de keystore)
  • Dans IDEA 13 et plus tôt dataSources.ids, datasources.xml peut contenir des mots de passe de base de données. IDEA 14 Résout ce problème.

Vous pouvez envisager de ne pas partager ce qui suit:

  • fichier gradle.xml, voir cette discussion
  • dossier de dictionnaires utilisateur (pour éviter les conflits si un autre développeur a le même nom)
  • Fichiers XML sous .idea/libraries au cas où ils sont généré à partir de Gradle projet

Format de projet hérité (.ipr/.iml/.iws des dossiers)

  • Partager le projet .ipr fichier et tous les .imlles fichiers du module, ne partage pas la .iws fichier comme il stocke les paramètres spécifiques à l'utilisateur

Bien que ces instructions soient pour IntelliJ IDEA, elles sont vraies à 100% pour Android Studio.


Voici une .gitignore extrait qui incorpore toutes les règles ci-dessus:

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

70
2017-08-26 22:45



Je ne suis pas d'accord avec toutes ces réponses. La configuration suivante fonctionne très bien pour l'application de notre organisation.

J'ignore:

  • /build
  • /.idea (avec d'éventuelles exceptions, voir les commentaires dans réponse de Dalewking)
  • *.iml
  • local.properties

Je pense que presque tout le monde est d'accord /build.

Je suis tombé malade de voir constamment des messages sur les différents library.xml fichiers que Gradle crée ou supprime dans /.idea. le build.gradle s'exécutera sur le site local du développeur lors de la première consultation du projet, alors pourquoi ces fichiers XML doivent-ils être versionnés? Android Studio génère également le reste de /.idea quand un développeur crée un projet en utilisant Check out from Version Control, alors pourquoi est-ce que quelque chose dans ce dossier doit être versionné?

Si la *.iml est versionné, un nouvel utilisateur devra nommer le projet exactement comme s'il était engagé. Puisqu'il s'agit également d'un fichier généré, pourquoi la version en premier lieu?

le local.properties fichiers pointe vers un chemin absolu sur le système de fichiers pour le SDK, il ne devrait donc pas être versionné.

Modifier 1: Ajoutée .gradle ignorer les éléments de mise en cache gradle qui ne devraient pas être versionnés (merci Vasily Makarov).

Modifier 2: Ajoutée .DS_Store maintenant que j'utilise Mac. Ce dossier est spécifique à Mac et devrait ne pas être versionné.

Note supplémentaire: Vous souhaitez probablement ajouter un répertoire dans lequel placer vos clés de signature lors de la création d'une version.

Pour copier / coller commodité:

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

34
2017-07-10 14:57



J'utilise ce. Gitignore. Je l'ai trouvé à: http://th4t.net/android-studio-gitignore.html

*.iml
*.iws
*.ipr
.idea/
.gradle/
local.properties

*/build/

*~
*.swp

32
2018-05-21 10:53



Dans le cas d'Android Studio, les seuls fichiers devant être enregistrés dans le contrôle de version sont les fichiers requis pour générer l'application à partir de la ligne de commande à l'aide de Gradle. Vous pouvez donc ignorer:

  • * .iml
  • .idée
  • construire

Toutefois, si vous enregistrez des paramètres IDE, tels que les paramètres de style de code personnalisé, ils sont enregistrés dans le dossier .idea. Si vous souhaitez ces modifications dans le contrôle de version, vous devez également enregistrer les fichiers IDEA (* .iml et .idea).


30
2018-05-24 15:11



Mon conseil serait aussi de ne pas ignorer le dossier .idea.

J'ai importé un projet Eclipse basé sur Git sur Android Studio et cela s'est bien passé. Plus tard, j'ai voulu importer ce projet avec Git (comme la première fois) sur une autre machine avec Android Studio, mais cela n'a pas fonctionné. Android Studio a chargé tous les fichiers mais n'a pas pu "voir" le projet en tant que projet. Je pourrais seulement ouvrir des fichiers Git.

Lors de l'importation du projet pour la première fois (d'Eclipse à Android Studio) mon ancien .gitignore a été écrasé et le nouveau ressemblait à ceci:

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

Donc, j'ai essayé d'utiliser un gitignore vide et maintenant cela a fonctionné. L'autre Android Studio pourrait charger les fichiers et le projet. Je suppose que certains fichiers ne sont pas importants (profiles_settings.xml) pour Git et l'importation mais je suis juste heureux que cela a fonctionné.


16
2018-06-21 00:35



Pour les projets Android Studio 3.0, utilisez les éléments suivants:

.gitignore

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

Dossier de projet Gradle

La seule chose qui devrait être dans votre dossier de projet (Gradle) après le clonage du dépôt est cette structure (au moins pour les cas d'utilisation que j'ai rencontrés jusqu'à présent):

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

11
2018-06-30 12:06



Il n'y a AUCUN BESOIN d'ajouter au contrôle source l'un des éléments suivants:

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

Vous pouvez donc configurer hgignore ou gitignore en conséquence.

La première fois qu'un développeur clone le contrôle de la source peut aller:

  1. Ouvrez Android Studio
  2. Projet d'importation
  3. Recherchez le build.gradle dans le référentiel cloné et ouvrez-le

C'est tout

PS: Android Studio va ensuite, via maven, obtenir le plugin gradle en supposant que votre build.gradle ressemble à ceci:

// 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 va générer le contenu du dossier .idea (y compris le workspace.xml, qui ne devrait pas être dans le contrôle de la source car il est généré) et le dossier .gradle.

Cette approche est compatible Eclipse dans la mesure où le contrôle de la source ne sait pas vraiment quoi que ce soit à propos d'Android Studio. Android Studio a juste besoin de build.gradle pour importer un projet et générer le reste.


8
2017-10-10 00:34