idea ¿Qué debería estar en mi.gitignore para un proyecto de Android Studio?




gitignore java (24)

¿Qué archivos deberían estar en mi .gitignore para un proyecto de Android Studio?

He visto varios ejemplos que incluyen .iml pero los documentos de IntelliJ dicen que .iml debe incluirse en su control de código fuente.


Github mantiene elementos útiles de gitignore para varios tipos de proyectos. Aquí está la lista de elementos útiles de gitignore para proyectos de 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 en github


A partir de Android Studio, el archivo .gitignore 0.8.4 se genera automáticamente al iniciar un nuevo proyecto. Por defecto contiene:

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

Estoy de acuerdo con esta declaración, sin embargo, modifico este archivo para cambiar / construir para construir / (Esto incluirá / build y / app / build) Así que no termino con todos los archivos en app / build en mi repositorio.

Tenga en cuenta también que si importa un proyecto desde Eclipse, el .gitignore no se copiará, o se creará "automágicamente" para usted.


Para evitar la importación de todos los archivos, donde Android Studio ignora la lista de "Archivos ignorados", pero sigue aprovechando Android Studio VCS, hice lo siguiente: Esto usará la lista de "Archivos ignorados" de Android Studio (¡después de la importación! Y evite tener que utilizar la manera incómoda que Tortoise SVN establece en la lista svn: ignore.

  1. Use el navegador del repositorio SVN de Tortoise para crear una nueva carpeta de proyecto directamente en el repositorio.
  2. Use Tortoise SVN para verificar la nueva carpeta en la parte superior de la carpeta que desea importar. Recibirá una advertencia de que la carpeta local no está vacía. Ignora la advertencia. Ahora tienes una carpeta de nivel superior versionada con contenido no versionado.
  3. Abra su proyecto desde el directorio de trabajo local. VCS ahora debería estar habilitado automáticamente
  4. Establezca sus excepciones de archivo en Archivo -> Configuración -> Control de versión -> Archivos ignorados
  5. Agregue archivos a SVN desde Android Studio: seleccione 'Aplicación' en Estructura del proyecto -> VCS -> Agregar a VCS (esto agregará todos los archivos, excepto "Archivos ignorados")
  6. Cometer cambios

En el futuro, se ignorarán los "Archivos ignorados" y aún podrá administrar VCS desde Android Studio.

Saludos, -Joost


A partir de Android Studio, el archivo .gitignore .gitignore se genera automáticamente al iniciar un nuevo proyecto. Por defecto contiene:

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

Actualizado a Android Studio 3.0 Por favor, comparta los elementos que faltan en los comentarios.

Una respuesta tardía, pero ninguna de las respuestas aquí y here estaba justamente sobre el dinero para nosotros ...

Entonces, aquí está nuestro archivo 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

Desde Android Studio 2.2 y hasta 3.0, los nuevos proyectos se crean con este archivo gitignore:

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

En desuso : para el formato de proyecto anterior, agregue esta sección a su archivo gitignore:


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

Este archivo debe estar ubicado en la carpeta raíz del proyecto y no dentro de la carpeta del módulo del proyecto.

Notas de edición:

  1. Desde la versión 0.3+ parece que puedes cometer y empujar archivos * .iml y build.gradle . Si su proyecto se basa en Gradle: en el nuevo cuadro de diálogo de abrir / importar, debe marcar la casilla de verificación "use auto import" y marcar el botón de opción "use default gradle wrapper (recommended)" . Todos los caminos ahora son relativos como sugirió @George.

  2. Respuesta actualizada según @ 128KB fuente adjunta y @Skela sugerencias


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

Admito la confirmación de la carpeta .idea (excluyendo workspace.xml y tasks.xml ). Pero estoy empezando a llegar a la conclusión de que los archivos .iml deben ignorarse.

Aquí está el problema:

Abra un proyecto en un directorio llamado "foo", por ejemplo, y obtendrá foo.iml y todo parece estar bien y bien. El problema es que si simplemente cambio el nombre del directorio a foo2 (o lo clono en otro nombre de directorio) cuando intentes abrir el proyecto en Android Studio obtendrás tres cosas:

  • Un nuevo archivo iml llamado foo2.iml
  • El archivo iml para su proyecto de Android se cambiará para apuntar ahora a foo2 como su padre
  • .idea / modules.xml tendrá una línea agregada para foo2.iml, por lo que tiene tanto el antiguo archivo iml como el del nuevo directorio.

No puedo encontrar una manera de evitar que Android Studio realice esta generación de archivos iml cuando el proyecto se almacena en un directorio diferente. Agregarlos al control de origen va a causar problemas. Por lo tanto, creo que quizás deberíamos ignorar los archivos * .iml y .idea/modules.xml


Soy kosher con la adición de los archivos .iml e Intellij sez para agregar la carpeta .idea pero ignorar .idea / workspace.xml y .idea / tasks.xml, pero ¿qué hay de .idea /raries /?

No veo como tiene sentido agregar esto. Tiene una lista de archivos XML que enumera las bibliotecas que se supone que el proyecto de Android Studio debe conocer. Se supone que estos vienen de dependencias definidas de build.gradle, no de un archivo de proyecto IDE.

También el contenido de uno de estos archivos se ve así:

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

No tiene sentido cometer esto. ¿Qué sucede si el usuario especificó un directorio de inicio diferente para gradle, o si usa una versión de gradle diferente, la ruta bajo .gradle/caches/artifacts-xxx será diferente para ellos (es decir, artifacts- El número que se adjunta al final será relacionado con la versión de gradle que está utilizando.) Estas rutas no son universales y, sin embargo, el consejo es verificar todo esto.


Depende de cómo se mantenga su formato de proyecto:

Tienes dos opciones:

  1. Formato basado en directorio (tendrá una carpeta .idea que contiene los archivos específicos del proyecto)
  2. Formato basado en archivos (los archivos de configuración son .iws y .ipr )

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

Los archivos comprometidos con el control de versiones dependen de lo anterior:

  1. Incluya la carpeta .idea en el control de versiones, excluya workspace.xml y tasks.xml
  2. .ipr archivo .ipr control de .ipr y todos los archivos del módulo .iml excluyen el archivo .iws , ya que almacena las configuraciones específicas del usuario.

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


Combino los archivos .gitignore de Github

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

Por favor lea: Soporte de JetBrains: Cómo administrar proyectos bajo los sistemas de control de versiones


Basándome en mi Android normal .gitignore , y después de leer la documentación en el sitio web de Intellij IDEA y leer las publicaciones en , he creado el siguiente archivo:

# 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

También tenga en cuenta que, como se señaló, la sección de archivos nativos creados es principalmente útil cuando está creando su propio código nativo con el NDK de Android. Si, por otro lado, está utilizando una biblioteca de terceros que incluye estos archivos, es posible que desee eliminar estas líneas (* .o y * .so) de su .gitignore.


En el caso de Android Studio, los únicos archivos que deben guardarse en el control de versiones son los archivos necesarios para compilar la aplicación desde la línea de comandos usando gradle. Así que puedes ignorar:

  • * .iml
  • .idea
  • construir

Sin embargo, si guarda cualquier configuración IDE, como la configuración de estilo de código personalizado, se guardan en la carpeta .idea. Si desea esos cambios en el control de versión, también guardará los archivos IDEA (* .iml y .idea).


Para los proyectos de Android Studio 3.0 use lo siguiente:

.gitignore

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

Carpeta de proyectos Gradle

Lo único que debería estar en su carpeta de proyecto (Gradle) después de la clonación del repositorio es esta estructura (al menos para los casos de uso que encontré hasta ahora):

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

Sé que este es un tema antiguo y ciertamente hay muchas opciones, pero realmente prefiero el gibo de Simon Whitaker. Es super simple de usar, multiplataforma (mac, * nix y windows), y usa el repositorio github github.com/github/gitignore para que esté (básicamente) siempre actualizado.

Asegúrese de que su caché local esté actualizado:

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

Busque el idioma / tecnología que necesita:

    $ gibo --search android
    Android

Mostrar el archivo .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

Ahora, agréguelo al archivo .gitignore de su proyecto:

    $ gibo Android >> .gitignore

(Asegúrese de usar >> para adjuntar al archivo .gitignore de su proyecto; uno > lo sobrescribirá, ¡como lo he hecho muchas veces en caso de accidente!)

Sé que esto no es responder a la pregunta exacta del OP, ¡pero usar gibo lo hace así que ya casi no tienes que pensar en 'la pregunta'! .. ¡es agradable! ;)



Para tener una mejor idea, todo lo que necesitas son los siguientes archivos

  • aplicación
  • construir.gradle
  • settings.gradle

Podrías poner todo lo demás en el archivo .gitignore. Todos los cambios de su aplicación se encuentran principalmente en estos archivos y carpetas. El resto que se ve en un proyecto básico son archivos de compilación de gradle o archivos de configuración de Android Studio.

Si está utilizando Android Studio, puede usar "Importar proyecto" para generar el proyecto con éxito. Alternativamente, puedes construir usando la línea de comandos, sigue Construyendo proyectos de Android con Gradle .


Básicamente cualquier archivo que se regenera automáticamente.

Una buena prueba es clonar su repositorio y ver si Android Studio puede interpretar y ejecutar su proyecto inmediatamente (generando lo que falta).
Si no, encuentra lo que falta y asegúrate de que no se ignore, sino que se agregue al repositorio.

Dicho esto, puedes tomar el ejemplo de los archivos .gitignore existentes, como el de 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/

Esta documentación oficial de JetBrains Support dice que se debe incluir lo siguiente:

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

También da otras recomendaciones de cosas a tener en cuenta.


github.com/github/gitignore es una colección impresionante

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

NO NECESITA agregar al control de origen ninguno de los siguientes:

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

Por lo que puede configurar hgignore o gitignore en consecuencia.

La primera vez que un desarrollador clona el control de origen puede ir:

  1. Abrir Android Studio
  2. Proyecto de Importación
  3. Busque el build.gradle dentro del repositorio clonado y ábralo

Eso es todo

PD: Android Studio luego, a través de maven, obtendrá el plugin de gradle suponiendo que su build.gradle se parece a esto:

// 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 generará el contenido de la carpeta .idea (incluido el workspace.xml, que no debería estar en control de código fuente porque se genera ) y la carpeta .gradle.

Este enfoque es amigable con Eclipse en la forma en que el control de origen realmente no sabe nada acerca de Android Studio. Android Studio solo necesita el build.gradle para importar un proyecto y generar el resto.


Compilacion:

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

Es mejor agregar la lista .gitignore durante el tiempo de desarrollo para evitar efectos secundarios desconocidos cuando el Control de versiones no funcionará por algún motivo debido a la lista predefinida (copiar / pegar) de algún lugar. Para uno de mis proyectos, la lista de ignorar es solo de:

.gradle
.idea
libs
obj
build
*.log

Tuve problemas al ignorar los archivos de compilación, pero esto parece funcionar :-)

# 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

Actualizado el 7/2015:

Aquí está la fuente definitiva de JetBrains

Formato de proyecto basado en directorio (directorio .idea)

Este formato es usado por todas las versiones recientes de IDE por defecto. Esto es lo que necesitas compartir:

  • Todos los archivos en el directorio .idea en la raíz del proyecto, excepto los archivos workspace.xml y tasks.xml , que almacenan la configuración específica del usuario
  • Todos los archivos de módulo .iml que se pueden ubicar en directorios de módulos diferentes (se aplica a IntelliJ IDEA)

Ten cuidado de compartir lo siguiente:

  • Artefactos de Android que producen una construcción firmada (contendrá las contraseñas del almacén de claves)
  • En IDEA 13 y en dataSources.ids anterior, datasources.xml puede contener contraseñas de base de datos. IDEA 14 resuelve este problema .

Puede considerar no compartir lo siguiente:

  • archivo gradle.xml, vea esta discusión
  • carpeta de diccionarios del usuario (para evitar conflictos si otro desarrollador tiene el mismo nombre)
  • Archivos XML bajo .idea/libraries en caso de que se generen a partir del proyecto Gradle

Formato de proyecto heredado ( .ipr / .iml / .iws )

  • Comparta el archivo .ipr del proyecto y todos los archivos del módulo .iml , no comparta el archivo .iws ya que almacena la configuración específica del usuario

Si bien estas instrucciones son para IntelliJ IDEA, son válidas al 100% para Android Studio.

Aquí hay un fragmento de .gitignore que incorpora todas las reglas anteriores:

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




gitignore