Que devrait contenir mon .gitignore pour un projet Android Studio?

1256

Quels fichiers doivent être dans mon .gitignorepour un projet Android Studio?

J'ai vu plusieurs exemples qui incluent tous, .imlmais les documents IntelliJ disent que cela .imldoit être inclus dans votre contrôle de code source.

respectTheCode
la source
7
github.com/github/gitignore
Yousha Aleayoub

Réponses:

1331

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 n'était juste pour nous ...

Voici donc 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

Obsolète - pour les anciens formats de projet, 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 puissiez valider et pousser les fichiers * .iml et build.gradle . Si votre projet est basé sur Gradle: dans la nouvelle boîte de dialogue d'ouverture / importation, vous devez cocher la "use auto import"case et cocher la case d'option "use default gradle wrapper (recommended)". Tous les chemins sont désormais relatifs comme l'a suggéré @George.

  2. Réponse mise à jour selon la source jointe @ 128 Ko et les suggestions @Skela

Lior Iluz
la source
8
Pourquoi devons-nous importer le projet et ajouter manuellement des bibliothèques et des dépendances de module? Existe-t-il un moyen de conserver ces éléments dans le référentiel et lorsque nous clonons le référentiel, il suffit d'ouvrir un projet?
Justin
13
La bonne façon de procéder consiste à archiver les fichiers * .iml et * .ipr, et à les ouvrir simplement dans l'EDI. Pourquoi forcer d'autres personnes de votre équipe à recréer ces fichiers et pourquoi leur permettre d'utiliser des paramètres éventuellement incorrects (tels que la version sdk)?
Sky Kelsey
26
@liorry, je ne suis pas d'accord. C'est la première réponse que d'autres verront et elle est massivement votée. En raison de toutes les choses que vous devez faire pour obtenir un projet opérationnel après un nouveau clone de git utilisant ce .gitignore particulier, je pense fortement que ce n'est pas ce dont la plupart des gens auraient besoin. Bien que je suppose que le nombre de votes positifs m'indique le contraire, mais je ne suis toujours pas d'accord. À tout le moins, peut-être des informations indiquant que vous devrez probablement reconstituer le projet et que cela ne fonctionnera pas immédiatement.
Skela
10
@liorry, je ne veux pas être grossier ou quoi que ce soit d'autre, veuillez ne pas le prendre personnellement. Le problème est que ces choses doivent fonctionner avec une quantité minimale de configuration pour être utiles. Lorsque vous devez importer le projet et ajouter manuellement des dépendances de module, il est immédiatement entré dans un royaume de folie. Lorsque vous êtes familier avec un projet et connaissez ces choses à fond, votre approche ne pose aucun problème. Mais pour un développeur qui clone le projet pour la première fois, ce n'est tout simplement pas pratique. J'essaie vraiment de m'assurer que votre approche ne devienne pas la norme, c'est tout.
Skela
14
Vous ne devez pas versionner les .imlfichiers à moins que vous ne vouliez pas gérer les ennuis inutiles si d'autres utilisateurs nomment le projet différemment lors de leur extraction.
theblang
151

En s'appuyant sur mon .gitignore Android normal , et après avoir lu la documentation sur le site Web Intellij IDEA et lu les articles 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 section des fichiers natifs créés est principalement utile lorsque vous créez votre propre code natif avec Android NDK. Si, en revanche, vous utilisez une bibliothèque tierce qui inclut ces fichiers, vous souhaiterez peut-être supprimer ces lignes (* .o et * .so) de votre .gitignore.

Phil
la source
10
Presque juste. Je ne pense pas que ce soit une bonne idée d'ignorer * .so car vous ne pourrez pas travailler avec des projets qui ont des dépendances liées aux bibliothèques NDK. Mais un très bon point de départ par tous les comptes!
Skela
@Skela bon point. J'en avais là depuis que je construisais mes propres fichiers natifs - mais j'ai également travaillé sur des projets qui nécessitent un simple copier-coller de fichiers pré-construits. J'ai ajouté une note à ce sujet à la réponse ci-dessus.
Phil
@Phil Avez-vous une opinion sur les fichiers XML en .idea/libraries? Doivent-ils être partagés ou exclus selon vous?
Alex Lockwood
1
@AlexLockwood Je pense que ces fichiers devraient être inclus si le projet ne dépend pas d'un autre projet ou module. Si, cependant, le projet dépend d'un module qui contient les bibliothèques, ce fichier doit être ignoré au niveau du projet, mais pas par le module.
Phil
@Phil très cool et je l'ai utilisé jusqu'à présent, mais un fichier dex passe à travers les mailles du filet: /moduledirectory/build/intermediates/dex-cache/cache.xml - ne serait-il pas logique d'ajouter ** / build afin de exclure également les dossiers de construction dans les modules?
Oliver Hausler
82

Mise à jour 7/2015:

Voici la source définitive de JetBrains


Format de projet basé sur un répertoire (répertoire .idea)

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

  • Tous les fichiers sous le .idearépertoire à la racine du projet à l' exception des fichiers workspace.xmlet tasks.xmlqui stockent les paramètres spécifiques à l'utilisateur
  • Tous les .imlfichiers de module qui peuvent être situés dans différents répertoires de module (s'applique à IntelliJ IDEA)

Soyez prudent lorsque vous partagez les éléments suivants:

  • Artefacts Android qui produisent une construction signée (contiendront des mots de passe de fichier de clés)
  • Dans IDEA 13 et versions antérieures dataSources.ids, datasources.xmlpeut contenir des mots de passe de base de données. IDEA 14 résout ce problème .

Vous pouvez envisager de ne pas partager les éléments suivants:

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

Format de projet hérité ( .ipr/ .iml/ .iwsfichiers)

  • Partagez le .iprfichier de projet et tous les .imlfichiers de module, ne partagez pas le .iwsfichier car il stocke les paramètres spécifiques à l'utilisateur

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


Voici un .gitignoreextrait qui incorpore toutes les règles ci-dessus:

# Android Studio / IntelliJ IDEA 
*.iws
.idea/libraries
.idea/tasks.xml
.idea/vcs.xml
.idea/workspace.xml
Sky Kelsey
la source
Les SDK pris en charge sont définis dans AndroidManifest.xml (et également par Gradle). Tout SDK autorisé par ce paramètre doit être correct pour le développement. Concernant les styles de code: ce n'est pas quelque chose qui doit être maintenu dans chaque projet séparément, et de plus il doit être clarifié indépendamment de l'IDE. En-têtes de copyright: espérons-le, ils se trouvent dans votre base de code et non dans les fichiers de projet IDE. Sinon, construire sur la ligne de commande ne les inclurait tout simplement pas ...
Risadinha
@Risadinha 1) Les SDK sont également définis au niveau de l'EDI. Ils sont référencés dans le manifeste, mais le fichier de projet contient les définitions SDK réelles. 2) Le style de code doit être conservé AU MOINS au niveau du projet. Idéalement, tout le monde écrirait du Java standard, mais bon. 3) Les en-têtes de copyright sont stockés dans le projet. Ils sont utilisés pour la création de nouveaux fichiers et peuvent contenir des macros pour le nom, le nom de l'entreprise, le projet, la date, etc. Je vous recommande de les vérifier! En résumé, les fichiers de projet contiennent des méta-informations importantes sur le projet qui doivent être partagées et contrôlées au sein de l'équipe.
Sky Kelsey
3
Un responsable a retiré les modifications de son propre référentiel . Il sera probablement mis sous contrôle bientôt.
FalconC
5
JetBrains a déprécié DOC-1186 et a mis ses recommandations mises à jour dans un nouveau message : DO INCLUDE: Tous les fichiers sous le répertoire .idea à la racine du projet sauf les workspace.xml et tasks.xml, et tous les fichiers .iml. FAITES ATTENTION lorsque vous partagez des artefacts Android qui produisent une version signée (contiendra des mots de passe de fichier de clés), dataSources.ids et datasources.xml (ils peuvent contenir des mots de passe). CONSIDÉRER À L'EXCLUSION: gradle.xml, dossier de dictionnaires utilisateur et fichiers XML sous .idea / bibliothèques (au cas où ils seraient générés à partir du projet Gradle).
JSmitty
2
C'est une belle théorie, mais cela ne fonctionne tout simplement pas pour nous. Nous nous retrouvons constamment avec des fichiers .iml avec des entrées comme celle-ci: <orderEntry type="jdk" jdkName="1.6 (38)" jdkType="JavaSDK" />Remarquez le nombre 38 qui semble être constamment incrémenté. (le fichier misc.xml a également ce problème).
Sam
41

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

J'ignore:

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

J'en ai assez de voir constamment des messages sur les différents library.xmlfichiers que Gradle crée ou supprime /.idea. Le build.gradles'exécutera sur la section locale des développeurs lors de la première vérification du projet, alors pourquoi ces fichiers XML doivent-ils être versionnés? Android Studio générera également le reste /.idealorsqu'un développeur crée un projet en utilisant Check out from Version Control, alors pourquoi tout ce qui se trouve dans ce dossier doit-il être versionné?

Si le *.imlest versionné, un nouvel utilisateur devra nommer le projet exactement le même que lors de sa validation. Puisqu'il s'agit également d'un fichier généré, pourquoi le versionner en premier lieu?

Les local.propertiesfichiers pointent vers un chemin absolu sur le système de fichiers pour le SDK, il ne doit donc certainement pas être versionné.

Edit 1 : Ajouté .gradlepour ignorer les trucs de mise en cache de gradle qui ne devraient pas être versionnés (merci Vasily Makarov ).

Edit 2 : Ajouté .DS_Storemaintenant que j'utilise Mac. Ce dossier est spécifique à Mac et ne doit pas être versionné.

Remarque supplémentaire : vous souhaiterez probablement également ajouter un répertoire dans lequel insérer vos clés de signature lors de la création d'une version finale.

Pour la commodité du copier / coller :

.gradle
/build
/.idea
*.iml
local.properties
.DS_Store 
theblang
la source
4
Je suis d'accord avec ta réponse. Je pense également que ni les fichiers * .iml ni .idea ne devraient être versionnés: stackoverflow.com/a/26290130/2948212
diegosasw
7
Mon vote est pour votre gitignore car il ressemble beaucoup au mien. Suggestions de couple: utilisez build/au lieu de /buildpour faire correspondre les répertoires de construction du module comme app/build. Utilisez .gradlepour faire correspondre le répertoire de mise en cache des niveaux.
Vasily Makarov
Je me demande également pourquoi le gitignore par défaut répertorie / build au lieu de build / Je me retrouve avec tous les fichiers dans app / build dans mon référentiel si j'utilise / build
guyland123
@ guyland123 Je viens de remarquer que j'ai un autre .gitignorefichier dans mon répertoire d'application qui contient également /build. Est-ce généré automatiquement, je ne me souviens pas? S'appliquera donc build/aux sous-dossiers?
theblang
@mattblang yes .gitignore est généré automatiquement lorsque vous créez un nouveau projet. Cependant, il n'est pas créé lorsque vous importez un projet depuis, par exemple, Eclipse. build / correspondra à tous les répertoires nommés "build" sous l'emplacement du fichier .gitignore. Par exemple. app / build sera ignoré.
guyland123
37

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

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

*/build/

*~
*.swp
helbaroudy
la source
1
* / build / n'ignore pas les fichiers inchangés dans mon répertoire de build. des idées? @ Résolu: j'ai dû ajouter * / * / build / car mon dossier de build était profond de quelques répertoires.
speedynomads
35

Dans le cas d'Android Studio, les seuls fichiers qui doivent être enregistrés dans le contrôle de version sont les fichiers requis pour créer l'application à partir de la ligne de commande à l'aide de gradle. Vous pouvez donc ignorer:

  • * .iml
  • .idée
  • construire

Cependant, si vous enregistrez des paramètres IDE, tels que des 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).

Siva Velusamy
la source
3
Merci d'avoir expliqué cela. D'après ce que j'ai lu si vous souhaitez inclure .idea dans votre projet, vous devez ignorer * /. Idea / workspace.xml et * /. Idea / tasks.xml
respectTheCode
15
n'ignorez pas le dossier .idea pour l'instant. Le plugin Gradle n'a pas encore de tâche `` idée Gradle '' et le projet d'importation dans Android Studio est loin d'être parfait maintenant.
robotoaster
2
De plus, si vous travaillez en équipe, pensez à ignorer local.properties car il contient le chemin sdk codé en dur.
Calin
@robotoaster, recommanderiez-vous toujours de ne pas ignorer le dossier .idea?
loeschg du
@Ioeschg n'est plus requis. Si vous extrayez Clean Git Repo, utilisez Import New Project et cela devrait fonctionner correctement tant que des fichiers de construction sont présents.
robotoaster
20

Android Studio 3.4

Si vous créez un projet Gradle à l'aide d'Android Studio, le .gitignorefichier contiendra les éléments suivants:

.gitignore

*.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

Je recommanderais d'ignorer le répertoire complet ".idea" car il contient des configurations spécifiques à l'utilisateur, rien d'important pour le processus de construction.

Dossier de projet Gradle

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

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

Il est recommandé d'archiver les scripts de wrapper gradle (voir ici ).

Pour rendre les fichiers Wrapper disponibles pour d'autres développeurs et environnements d'exécution, vous devrez les archiver dans le contrôle de version.

Willi Mentzel
la source
1
Pourquoi devriez-vous conserver des fichiers binaires comme gradlew et gradle.bat?
Bilthon
2
@Bilthon Ce ne sont pas des binaires. Ce sont des scripts de démarrage gradle pour Windows (gradle.bat) et Linux (gradlew).
Willi Mentzel
Ohh .. Je vois que tu as raison, mais ne sont-ils pas autogénérés de toute façon?
Bilthon
2
@Bilthon En effet, ils le sont! Ils sont générés avec des options par défaut. Si vous changez quelque chose, ils doivent être inclus dans votre référentiel afin de le construire correctement lors de son extraction. Ils sont si petits que ça ne fait pas de mal de toujours les garder.
Willi Mentzel
2
Consultez également cette ressource officielle ici qui recommande explicitement de valider les scripts de wrapper Gradle au contrôle de code
friederbluemle
19

Mon conseil serait également de ne pas ignorer le dossier .idea.

J'ai importé un projet Eclipse basé sur Git dans 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 comme un projet. Je n'ai pu ouvrir que des fichiers Git.

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

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

J'ai donc essayé d'utiliser un gitignore vide et maintenant ça a marché. 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 content que cela ait fonctionné.

Ingo
la source
De github.com/joeblau/gitignore.io/issues/… : erge Baranov (IntelliJ) 26 sept. 14:23 CEST Cela dépendrait du projet. Si le projet est importé de Maven ou Gradle, les fichiers .iml sont générés automatiquement et ne peuvent pas être partagés, sinon ces fichiers sont essentiels pour le projet et doivent être partagés afin que d'autres utilisateurs puissent ouvrir le projet après le paiement. Les fichiers .iml contiennent toutes les informations sur la configuration du module (les racines, les dossiers sources, les dépendances, etc.).
Adrian Romanelli
9

C'est le meilleur moyen de générer .gitignorevia ici

Jacky
la source
1
Je n'arrive pas à faire fonctionner cela pour Android Studio. Si je sélectionne simplement "android", cela semble être une implémentation Eclipse. Suis-je en train de mal faire?
zipzit
La seule mention à Eclipse est sur une seule ligne: "Dossier Proguard généré par Eclipse". Le reste semble OK pour AS
Jose_GD
@zipzit, vous avez peut-être raison. Il semble que le site génère .gitignore pas pour Android Studio car il ne contient pas .idea /.
CoolMind
1
Il y a aussi l'option Android Studio
Daniyal Javaid
8

IL N'EST PAS BESOIN d'ajouter au contrôle de 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 source peut aller:

  1. Ouvrez Android Studio
  2. Importer un projet
  3. Recherchez le build.gradle dans le référentiel cloné et ouvrez-le

C'est tout

PS: Android Studio obtiendra alors, via maven, 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()
    }
}

Le studio Android générera le contenu du dossier .idea (y compris le workspace.xml, qui ne devrait pas être sous contrôle de code source car il est généré ) et le dossier .gradle.

Cette approche est compatible avec Eclipse dans la mesure où le contrôle de source ne sait vraiment rien sur Android Studio. Android Studio a juste besoin du build.gradle pour importer un projet et générer le reste.

diegosasw
la source
5
Les gars, ceux qui votent négativement devraient fournir une raison valable de le faire. Il pourrait être utile de nous faire savoir à tous si nous nous trompons avec notre réponse.
diegosasw
1
There is NO NEEDoui, il y a des cas: des modèles de copyright qui doivent être partagés entre les membres de l'équipe, par exemple.
Henrique de Sousa
8

Je soutiens la validation du dossier .idea (à l'exclusion de workspace.xmlet tasks.xml). Mais je commence à conclure que les fichiers .iml doivent être ignorés.

Voici le problème:

Ouvrez un projet dans un répertoire nommé "foo" par exemple et vous obtiendrez foo.iml et que tout va bien. Le problème est que si je renomme simplement le répertoire en foo2 (ou le clone dans un autre nom de répertoire) lorsque vous essayez d'ouvrir le projet dans Android Studio, vous obtiendrez trois choses:

  • Un nouveau fichier iml nommé foo2.iml
  • Le fichier iml de votre projet Android sera modifié pour pointer maintenant vers foo2 en tant que parent
  • .idea / modules.xml aura une ligne ajoutée pour foo2.iml donc il a à la fois l'ancien fichier iml et celui du nouveau répertoire

Je ne trouve aucun moyen d'empêcher Android Studio de faire cette génération de fichier iml lorsque le projet est stocké dans un répertoire différent. Les ajouter au contrôle de code source va causer des problèmes. Par conséquent, je pense que nous devrions peut-être ignorer les fichiers * .iml et.idea/modules.xml

linquize
la source
J'ignore les fichiers /.ideaet .iml. Je voudrais savoir pourquoi le .ideadossier doit être validé.
theblang
En regardant mon projet actuel, je suppose qu'il n'y a que 2 choses que j'ai vérifiées à partir des paramètres de style de code .idea /: à appliquer pour l'équipe et un dictionnaire utilisateur contenant des mots spécifiques au projet qui ne sont pas de vrais mots. J'ai commencé avec de nombreux fichiers dans .idea validés, mais lorsqu'un fichier commence à apparaître comme modifié sans raison valable, il serait ajouté à .gitignore. Mon point n'était pas tant que .idea devrait être archivé que pour dire que les fichiers .iml et les modules.xml ne devraient pas l'être.
Désolé, SO a pris mon commentaire avant d'en avoir fini (je dois me rappeler que les commentaires n'acceptent pas les sauts de ligne). Modifié avec le reste de mes pensées.
Merci! Oui, ces fichiers que vous avez mentionnés ont du sens. Je suis d'accord, le plus gros mal de tête était les library.xmlfichiers qui continuaient de déclencher des messages. De plus, je ne comprends pas pourquoi je continue de voir des gens dire que les fichiers * .iml devraient être inclus, donc bon point là-bas.
theblang
8

Testé avec Android Studio 3.0

Vous devrez peut-être installer le plug- in .ignore .

Vous pouvez générer automatiquement le fichier .gitignore pour Android. Faites un clic droit sur le dossier et suivez

Ajouter un fichier .gitignore

Sélectionnez ensuite Android dans le panneau de gauche et cliquez sur Générer

Générer un fichier .gitignore

Android Studio générera un fichier .gitignore qui contient tout le fichier à ignorer.

Tiré de http://menukanows.com/how-to-add-gitignore-file-in-android-project/

Menuka Ishan
la source
7

Dépend de la façon dont le format de votre projet est géré:

Vous avez deux options:

  1. Format basé sur un .idearépertoire (vous aurez un dossier contenant les fichiers spécifiques au projet)
  2. Format basé sur des fichiers (les fichiers de configuration sont .iwset .ipr)

Réf: http://www.jetbrains.com/idea/webhelp/project.html

Les fichiers validés pour le contrôle de version dépendent des éléments ci-dessus:

  1. Inclure le dossier .idea dans le contrôle de version, exclure workspace.xmlet tasks.xml
  2. .iprFichier de contrôle de version et tous les .imlfichiers de module, excluez le .iwsfichier car il stocke les paramètres spécifiques à l'utilisateur.

Réf: https://intellij-support.jetbrains.com/entries/23393067

ramk
la source
1
tous mes projets semblent avoir à la fois des dossiers .idea et des fichiers
.iws
1
Personnellement, j'ai essayé de suivre les conseils de JetBrains mais cela n'a pas fonctionné pour moi. Moi et un autre développeur utilisons Android Studio et nous avions des fichiers .idea et .iml dans git. J'ai rapidement découvert qu'une fois que vous commencez à fusionner les validations et que vous rencontrez toutes sortes de problèmes lorsque l'outil de fusion ne parvient pas à fusionner l'un des fichiers sous le chemin .idea. En conséquence, j'ai ajouté tous les imls et .idea à gitignore. Après tout, Studio fait un très bon travail de création de structure de projet lors de l'importation d'un projet Gradle. Alors maintenant, je fais juste attention à ce que j'ai dans mes fichiers de notes.
zmicer
5

Fondamentalement, tout fichier régénéré automatiquement.

Un bon test consiste à cloner votre référentiel et à voir si Android Studio est capable d'interpréter et d'exécuter votre projet immédiatement (en générant ce qui manque).
Sinon, trouvez ce qui manque et assurez-vous qu'il n'est pas ignoré, mais ajouté au dépôt.

Cela étant dit, vous pouvez prendre exemple sur des .gitignorefichiers existants , comme celui d' 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/
VonC
la source
11
Ceci est une erreur. Vous devez archiver vos fichiers * .iml, et très probablement .idea et * .ipr également. La partie "tout ce qui est généré automatiquement" est particulièrement erronée. La plupart des projets Android sont générés automatiquement après tout.
Sky Kelsey
6
Les * .iml, * .idea et * .ipr sont spécifiques à Android-Studio / IntelliJ. Ils ne sont pas nécessaires pour construire le projet. Comme ils sont spécifiques à l'EDI et non à la chaîne de construction, ils ne devraient probablement pas être archivés. Tout le monde peut utiliser n'importe quel IDE, il n'y a aucune raison d'archiver les fichiers de projet IntelliJ et pas ceux d'Eclipse, par exemple.
Marc Plano-Lesay
2
Si vous souhaitez travailler sur plusieurs fourches du même projet, ou avec une équipe où tout le monde utilise le même IDE, ou avoir un contrôle de version des paramètres complexes que vous utilisez pour votre IDE, alors oui, vous devez archiver les fichiers. Fichiers de projet pour IntelliJ sont bien plus qu'un simple fluff utilisé pour ouvrir votre code dans un éditeur.
Sky Kelsey
2
pourquoi mes fichiers iml continuent de s'afficher comme modifiés entre moi et mon collègue? spécifiquement external.root.project.path continue de changer sous la balise <module />
Sam
En utilisant Android Studio 0.8.12 sur Windows 8.1 et sur OS X Mavericks avec le même projet, je remarque que les deux fichiers suivants sont modifiés et marqués comme modifiés par Git lorsque j'ouvre le projet: <nom du projet> .iml et .idea \ misc.xml. Plus précisément: <excludeFolder url = "file: // $ MODULE_DIR $ / build / tmp" /> est ajouté ou supprimé de / de <nom du projet> .iml et .idea \ misc.xml est modifié en raison des différences d'installation JDK entre les OS.
jkwuc89
4

Je suis casher avec l'ajout des fichiers .iml et Intellij sez pour ajouter le dossier .idea mais ignorer .idea / workspace.xml et .idea / tasks.xml, mais qu'en est-il de .idea / bibliothèques /?

Je ne vois pas comment il est logique d'ajouter cela. Il contient une liste de fichiers XML répertoriant les bibliothèques que le projet Android Studio est censé connaître. Celles-ci sont censées provenir à la place des dépendances définies par build.gradle - pas d'un fichier de projet IDE.

Le contenu de l'un de ces fichiers ressemble également à ceci:

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

Cela n'a aucun sens de commettre cela. Que se passe-t-il si l'utilisateur a spécifié un répertoire d'accueil différent pour gradle, ou s'il utilise une version différente de gradle, le chemin sous .gradle/caches/artifacts-xxxva être différent pour lui (c'est artifacts--à- dire que le numéro ajouté à la fin se rapportera à la version de version gradle que vous utilisez. ) Ces chemins ne sont pas universels, et pourtant le conseil est de vérifier tout cela?

Zenocon
la source
4

Depuis Android Studio 0.8.4, le .gitignorefichier est généré automatiquement lors du démarrage d'un nouveau projet. Par défaut, il contient:

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
Johnny Doe
la source
3

Je sais que c'est un vieux sujet et il y a certainement beaucoup d'options, mais je préfère vraiment gibopar Simon Whitaker. Il est super simple à utiliser, multiplateforme (mac, * nix et windows), et utilise le dépôt github gitignoredonc il est (fondamentalement) toujours à jour.

Assurez-vous que votre cache local est à jour:

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

Recherchez la langue / technologie dont vous avez besoin:

    $ gibo --search android
    Android

Affichez le fichier .gitignore:

    $ 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

Maintenant, ajoutez-le au fichier .gitignore de votre projet:

    $ gibo Android >> .gitignore

(Assurez-vous que vous utilisez >>pour ajouter au fichier .gitignore de votre projet; un> le remplacera - comme je l'ai fait plusieurs fois par accident!)

Je sais que cela ne répond pas à la question exacte de l'OP, mais en utilisant gibo, vous n'avez plus à penser à la question! .. c'est bien! ;)

sorcier
la source
3

Pour avoir une meilleure idée, il vous suffit d'avoir les fichiers suivants

  • app
  • build.gradle
  • settings.gradle

Structure de projet Android de base

Vous pouvez mettre tout le reste dans le fichier .gitignore. Toutes les modifications apportées à votre application résident principalement dans ces fichiers et dossiers. Le reste que vous voyez dans un projet de base sont des fichiers de construction Gradle ou des fichiers de configuration Android Studio.

Si vous utilisez Android Studio, vous pouvez utiliser «Importer un projet» pour réussir la construction du projet. Alternativement, vous pouvez créer en utilisant la ligne de commande, suivez Création de projets Android avec Gradle .

kalan nawarathne
la source
3

Il est préférable d'ajouter la liste .gitignore pendant le temps de développement pour éviter un effet secondaire inconnu lorsque le contrôle de version ne fonctionnera pas pour une raison quelconque en raison de la liste prédéfinie (copier / coller) quelque part. Pour l'un de mes projets, la liste des ignorés est uniquement de:

.gradle
.idea
libs
obj
build
*.log
Tim Long
la source
3

Github gère des éléments gitignore utiles pour différents types de projets. Voici la liste des éléments gitignore utiles pour les projets Android.

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

Sudip Bhandari
la source
3
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change. - De l'avis
imtheman
@imtheman plausible .. J'ai mis à jour la réponse et mis le lien comme référence
Sudip Bhandari
2

Je fusionne les fichiers Github .gitignore

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

Veuillez lire: Support JetBrains: Comment gérer les projets sous les systèmes de contrôle de version

d.danailov
la source
2
Depuis 2016, je suis cette réponse la plus proche de nos besoins. Merci
Henrique de Sousa
2

En utilisant l'API fournie par gitignore.io , vous pouvez obtenir est généré automatiquement. Voici le lien direct aussi gitignore.io/api/androidstudio

### 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
Daniyal Javaid
la source
1

Depuis Android Studio 0.8.4, le fichier .gitignore est généré automatiquement lors du démarrage d'un nouveau projet. Par défaut, il contient:

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

Je suis d'accord avec cette déclaration, mais je modifie ce fichier pour changer / build en build / (Cela inclura / build et / app / build) Donc je ne me retrouve pas avec tous les fichiers dans app / build dans mon référentiel.

Notez également que si vous importez un projet depuis Eclipse, le .gitignore ne sera pas copié, ni créé "automatiquement" pour vous.

guyland123
la source
0

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/
Aqib Mumtaz
la source
0

Pour contourner l'importation de tous les fichiers, où Android Studio ignore la liste "Fichiers ignorés", mais utilise toujours Android Studio VCS, j'ai fait ce qui suit: Cela utilisera la liste "Fichiers ignorés" d'Android Studio (après l'importation! Pas pendant) ET évitez d'avoir à utiliser la manière encombrante Tortoise SVN définit la liste svn: ignore.

  1. Utilisez le navigateur du référentiel Tortoise SVN pour créer un nouveau dossier de projet directement dans le référentiel.
  2. Utilisez Tortoise SVN pour extraire le nouveau dossier en haut du dossier que vous souhaitez importer. Vous recevrez un avertissement indiquant que le dossier local n'est pas vide. Ignorez l'avertissement. Vous disposez maintenant d'un dossier de niveau supérieur avec un contenu non versionné.
  3. Ouvrez votre projet à partir du répertoire de travail local. VCS devrait maintenant être activé automatiquement
  4. Définissez vos exceptions de fichiers dans Fichier -> Paramètres -> Contrôle de version -> Fichiers ignorés
  5. Ajouter des fichiers à SVN depuis Android Studio: sélectionnez «App» dans la structure du projet -> VCS -> Ajouter à VCS (cela ajoutera tous les fichiers, sauf «Fichiers ignorés»)
  6. Valider les modifications

À l'avenir, "Fichiers ignorés" sera ignoré et vous pourrez toujours gérer VCS depuis Android Studio.

Santé, -Joost

Joost
la source
0

Android Studio 3.5.3

J'utilise ceci pour mes bibliothèques et projets et il couvre la plupart des fichiers générés par Android Studio et d'autres outils célèbres:

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

# Files for the ART/Dalvik VM
*.dex

# Generated files
bin/
gen/
out/
app/release/

# Gradle files
.gradle/
build/

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

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

# Freeline
freeline.py
freeline/
freeline_project_description.json

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

#NDK
*.so
Squti
la source
0

Ceci est créé en utilisant la référence de http://gitignore.io/ où vous pouvez créer le dernier fichier gitignore mis à jour pour n'importe quel projet. Pour Android http://gitignore.io/api/androidstudio . J'espère que cela t'aides. Actuellement, j'utilise Android Studio 3.6.3

# Created by https://www.gitignore.io/api/androidstudio
# Edit at https://www.gitignore.io/?templates=androidstudio

### 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
Vinodh Ram
la source
-1

Cette documentation officielle du support JetBrains indique que les éléments suivants doivent être inclus:

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

Il donne également d'autres recommandations de choses à faire attention.

tendu
la source
1
Pourquoi cela a-t-il été rejeté? Les votes sans explication sont la pire chose à propos de SO.
grue
-1

.gitignore de la bibliothèque AndroidRate

# 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
Alexander Savin
la source
-1

https://github.com/github/gitignore est une collection impressionnante

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
coquille
la source