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




idea vcs xml (20)

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

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


À partir de 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 le modifier / construire pour construire / (cela inclura / build et / app / build). Je ne me retrouve donc pas avec tous les fichiers dans app / build dans mon référentiel.

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


À partir de 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

Dans le cas d'Android Studio, les seuls fichiers à enregistrer 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 des paramètres de style de code personnalisés, ils sont enregistrés dans le dossier .idea. Si vous voulez ces changements dans le contrôle de version, vous devez également enregistrer les fichiers IDEA (* .iml et .idea).


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

Un bon test consiste à cloner votre repo et voir si Android Studio est capable d'interpréter et d'exécuter votre projet immédiatement (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 les fichiers .gitignore 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/

Il n'est pas nécessaire d'ajouter au contrôle de source les é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. Ouvrir 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 alors, 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()
    }
}

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

Cette approche est compatible avec Eclipse, à savoir que le contrôle de source ne connaît pas vraiment Android Studio. Android Studio a juste besoin du build.gradle pour importer un projet et générer le reste.



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

J'ignore:

  • /build
  • /.idea (avec des exceptions possibles, voir les commentaires dans la réponse de dalewking )
  • *.iml
  • local.properties

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

J'en ai eu marre de voir constamment des messages sur les différents fichiers library.xml /.idea ou /.idea par /.idea dans /.idea . Le build.gradle s'exécutera sur les locaux des développeurs lors de la première build.gradle du projet. Par conséquent, pourquoi ces fichiers XML doivent-ils être versionnés? Android Studio générera également le reste de /.idea lorsqu'un développeur crée un projet en utilisant l' /.idea Check out from Version Control , alors pourquoi quelque chose dans ce dossier doit-il être versionné?

Si le *.iml est versionné, un nouvel utilisateur devra nommer le projet exactement comme lors de la validation. Comme il s’agit également d’un fichier généré, pourquoi l’utiliser en premier lieu?

Les fichiers local.properties un chemin absolu sur le système de fichiers du SDK. Par conséquent, il ne doit absolument pas être versionné.

Edit 1 : Ajout de .gradle pour ignorer les éléments de mise en cache de dégradé qui ne doivent pas être versionnés (merci Vasily Makarov ).

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

Remarque supplémentaire : vous souhaitez probablement également ajouter un répertoire dans lequel placer 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 

Je sais que c'est un vieux sujet et qu'il y a certainement beaucoup d'options, mais je préfère vraiment le gibo de Simon Whitaker. Il est super simple à utiliser, multiplate-forme (mac, * nix et windows), et utilise le github.com/github/gitignore github github.com/github/gitignore donc il est (essentiellement) 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 / la 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 d'utiliser >> pour ajouter au fichier .gitignore de votre projet; un > le remplacera - comme je l'ai déjà fait plusieurs fois par accident!)

Je sais que cela ne répond pas à la question exacte de l'OP, mais l'utilisation de gibo permet de ne plus avoir à penser à la question! .. c'est bien! ;)


Je supporte la validation du dossier .idea (sauf workspace.xml et tasks.xml ). Mais je commence à en venir à la conclusion 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 tout semble 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 sur foo2 en tant que parent
  • .idea / modules.xml aura une ligne ajoutée pour foo2.iml donc il aura à la fois l'ancien fichier iml et celui du nouveau répertoire

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


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, je voulais 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 ne pouvais ouvrir que des fichiers Git.

Lors de la première importation du projet (depuis Eclipse vers Android Studio), mon ancien fichier .gitignore a été remplacé et le nouveau a ressemblé à 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 ça fonctionnait. 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é.


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 se trouver dans votre dossier de projet (Gradle) après le clonage du référentiel est cette structure (du moins pour les cas d'utilisation rencontrés jusqu'à présent):

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

Sur la base de mon fichier Android standard .gitignore , et après avoir lu la documentation sur le site Web d'Intellij IDEA et lu des articles sur , 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 générés est principalement utile lorsque vous créez votre propre code natif avec le NDK Android. Si, par contre, vous utilisez une bibliothèque tierce incluant ces fichiers, vous pouvez supprimer ces lignes (* .o et * .so) de votre fichier .gitignore.


.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

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

Mis à 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 here était 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

Obsolète - pour les anciens formats de projet, ajoutez cette section à votre fichier gitignore:


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

Ce fichier doit être situé 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 commettre et pousser des fichiers * .iml et build.gradle . Si votre projet est basé sur Gradle: dans la nouvelle boîte de dialogue d’ouverture / importation, cochez la case "use auto import" et cochez la case d’option "use default gradle wrapper (recommended)" . Tous les chemins sont maintenant relatifs comme @George a suggéré.

  2. Mise à jour de la réponse en fonction de la source attachée à @ 128 Ko et des suggestions de @Skela


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 défaut par toutes les versions IDE récentes. Voici ce que vous devez partager:

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

Faites attention à partager les éléments suivants:

  • Artefacts Android qui génèrent une génération signée (contiendront les mots de passe du magasin de clés)
  • Dans IDEA 13 et dataSources.ids antérieures, dataSources.ids , dataSources.ids 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 les éléments suivants:

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

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

  • Partagez le fichier .ipr du projet et tous les fichiers du module .iml , ne partagez pas le fichier .iws car il stocke des paramètres spécifiques à l'utilisateur

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

Voici un extrait de .gitignore qui intègre toutes les règles ci-dessus:

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

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/

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


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


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




gitignore