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

1256

¿Qué archivos deben estar en mi .gitignorepara un proyecto de Android Studio?

He visto varios ejemplos que incluyen todos, .imlpero los documentos de IntelliJ dicen que .imldeben incluirse en su control de origen.

respectTheCode
fuente
77
github.com/github/gitignore
Yousha Aleayoub

Respuestas:

1330

Actualizado a Android Studio 3.0. Comparta los elementos faltantes en los comentarios.

Una respuesta tardía pero ninguna de las respuestas aquí y aquí fue correcta 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, se crean nuevos proyectos con este archivo gitignore:

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

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


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

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

Editar notas:

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

  2. Respuesta actualizada de acuerdo con la fuente adjunta @ 128KB y las sugerencias de @Skela

Lior Iluz
fuente
8
¿Por qué tenemos que importar el proyecto y agregar manualmente libs y dependencias de módulos? ¿Hay alguna forma de preservar esas cosas en el repositorio y cuando clonamos el repositorio solo hacemos un proyecto abierto?
Justin
13
La forma correcta de hacer esto es registrar los archivos * .iml y * .ipr, y simplemente abrirlos en el IDE. ¿Por qué obligar a otras personas de su equipo a recrear estos archivos y permitirles usar configuraciones posiblemente incorrectas (como la versión SDK)?
Sky Kelsey
26
@liorry, no estoy de acuerdo. Esta es la primera respuesta que verán otras personas, y se votó masivamente. Debido a todas las cosas que debe hacer para poner en marcha un proyecto después de un nuevo clon de git usando este .gitignore en particular, creo que esto no es lo que la mayoría de la gente necesitaría. Aunque supongo que el número de votos positivos me dice lo contrario, pero todavía no estoy de acuerdo. Por lo menos, tal vez alguna información que indique que lo más probable es que tenga que configurar el proyecto nuevamente y no funcionará de manera inmediata.
Skela
10
@liorry, no quiero ser grosero ni nada, amigo, por favor no te lo tomes como algo personal. El problema es que estas cosas deben funcionar con una cantidad mínima de configuración para ser de utilidad práctica. Cuando necesite Importar el proyecto y agregar manualmente dependencias del módulo, inmediatamente entrará en un reino de locura. Cuando esté familiarizado con un proyecto y conozca estas cosas de adentro hacia afuera, entonces no hay problema con su enfoque. Pero para un desarrollador que está clonando el proyecto por primera vez, simplemente no es tan práctico. Realmente solo estoy tratando de asegurarme de que su enfoque no se convierta en la norma, eso es todo.
Skela
14
Usted debe no la versión de los .imlarchivos a menos que wa no para hacer frente a molestias innecesarias si otros usuarios mencionar el proyecto de manera diferente cuando se echa un vistazo.
theblang
151

Basándome en mi Android normal .gitignore , y después de leer la documentación en el sitio web de Intellij IDEA y leer publicaciones en StackOverflow, he construido 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.

Phil
fuente
10
Casi cierto. No creo que sea una buena idea ignorar * .so porque no podrá trabajar con proyectos que tengan dependencias vinculadas en las bibliotecas NDK. ¡Pero un muy buen punto de partida para todas las cuentas!
Skela
@Skela buen punto. Los tenía allí cuando estaba creando mis propios archivos nativos, pero también he trabajado en proyectos que requieren una simple copia y pegado de archivos preconstruidos. Agregué una nota sobre esto a la respuesta anterior.
Phil
@ Phil ¿Tiene alguna opinión sobre los archivos XML .idea/libraries? ¿Deberían ser compartidos o excluidos en su opinión?
Alex Lockwood
1
@AlexLockwood Creo que estos archivos deberían incluirse si el proyecto no depende de otro proyecto o módulo. Sin embargo, si el proyecto depende de un módulo que contiene las bibliotecas, este archivo debe ignorarse a nivel de proyecto, pero no por el módulo.
Phil
@ Phil es genial y lo he usado hasta ahora, pero un archivo dex se desliza por las grietas: /moduledirectory/build/intermediates/dex-cache/cache.xml: ¿no tendría sentido agregar ** / build para excluir las carpetas de compilación en los módulos también?
Oliver Hausler
82

Actualizado 7/2015:

Aquí está la fuente definitiva de JetBrains


Formato de proyecto basado en directorio (directorio .idea)

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

  • Todos los archivos bajo el .ideadirectorio en la raíz del proyecto, excepto los archivos workspace.xmly tasks.xmlque almacenan configuraciones específicas del usuario
  • Todos los .imlarchivos de módulos que se pueden ubicar en diferentes directorios de módulos (se aplica a IntelliJ IDEA)

Tenga cuidado al compartir lo siguiente:

  • Artefactos de Android que producen una compilación firmada (contendrá contraseñas del almacén de claves)
  • En IDEA 13 y versiones anteriores dataSources.ids, datasources.xmlpuede contener contraseñas de bases de datos. IDEA 14 resuelve este problema .

Puede considerar no compartir lo siguiente:

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

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

  • Comparta el .iprarchivo del proyecto y todos los .imlarchivos del módulo, no comparta el .iwsarchivo ya que almacena configuraciones específicas del usuario

Si bien estas instrucciones son para IntelliJ IDEA, son 100% verdaderas para Android Studio.


Aquí hay un .gitignorefragmento que incorpora todas las reglas anteriores:

# Android Studio / IntelliJ IDEA 
*.iws
.idea/libraries
.idea/tasks.xml
.idea/vcs.xml
.idea/workspace.xml
Sky Kelsey
fuente
Los SDK admitidos se definen en AndroidManifest.xml (y también en Gradle). Cualquier SDK permitido por esa configuración debe estar bien para el desarrollo. Con respecto a los estilos de código: esto no es algo que deba mantenerse en cada proyecto por separado y, además, debe aclararse independientemente del IDE. Encabezados de copyright: con suerte, estos se encuentran en su base de código y no en ningún archivo de proyecto IDE. De lo contrario, construir en la línea de comandos simplemente no los incluiría ...
Risadinha
@Risadinha 1) Los SDK también se definen en el nivel IDE. Se hace referencia en el Manifiesto, pero el archivo del proyecto contiene las definiciones reales del SDK. 2) El estilo del código debe mantenerse AL MENOS a nivel del proyecto. Idealmente, todos escribirían Java estándar, pero bueno. 3) Los encabezados de Copyright se almacenan en el proyecto. Se utilizan para la creación de archivos nuevos y pueden contener macros para el nombre, el nombre de la empresa, el proyecto, la fecha, etc. En resumen, los archivos del proyecto contienen metainformación importante sobre el proyecto que debe compartirse y controlarse en todo el equipo.
Sky Kelsey
3
Un mantenedor ha retirado los cambios a su propio repositorio . Probablemente se convertirá en maestro pronto.
FalconC
55
JetBrains ha desaprobado DOC-1186 y ha puesto sus recomendaciones actualizadas en una nueva publicación : INCLUYA: Todos los archivos en el directorio .idea en la raíz del proyecto, excepto el workspace.xml y task.xml, y todos los archivos .iml. Tenga cuidado al compartir artefactos de Android que producen una compilación firmada (contendrá contraseñas del almacén de claves), dataSources.ids y datasources.xml (pueden contener contraseñas). CONSIDERE EXCLUSIVO: gradle.xml, carpeta de diccionarios de usuario y archivos XML en .idea / bibliotecas (en caso de que se generen a partir del proyecto Gradle).
JSmitty
2
Esa es una teoría encantadora, pero esto simplemente no funciona para nosotros. Siempre terminamos con archivos .iml con entradas como esta: <orderEntry type="jdk" jdkName="1.6 (38)" jdkType="JavaSDK" />Observe el número 38 que parece estar aumentando constantemente. (El archivo misc.xml también tiene este problema).
Sam
41

No estoy de acuerdo con todas estas respuestas. La siguiente configuración funciona muy bien para la aplicación de nuestra organización.

Yo ignoro:

Creo que casi todos están de acuerdo /build.

Me library.xmlcansé de ver constantemente mensajes sobre los diversos archivos que Gradle crea o elimina /.idea. Se build.gradleejecutará en el local de los desarrolladores cuando revisen por primera vez el proyecto, entonces, ¿por qué esos archivos XML necesitan ser versionados? Android Studio también generará el resto de /.ideacuando un desarrollador cree un proyecto usando Check out from Version Control, entonces, ¿por qué es necesario versionar algo en esa carpeta?

Si *.imlse versiona, un nuevo usuario tendrá que nombrar el proyecto exactamente igual que cuando se confirmó. Dado que este también es un archivo generado, ¿por qué versionarlo en primer lugar?

Los local.propertiesarchivos apuntan a una ruta absoluta en el sistema de archivos para el SDK, por lo que definitivamente no se debe versionar.

Edición 1 : se agregó .gradlepara ignorar las cosas de almacenamiento en caché de gradle que no se deben versionar (gracias Vasily Makarov ).

Edición 2 : Agregado .DS_Storeahora que estoy usando Mac. Esta carpeta es específica de Mac y no debe ser versionada.

Nota adicional : Probablemente también desee agregar un directorio para colocar sus claves de firma al crear una versión de lanzamiento.

Para conveniencia de copiar / pegar :

.gradle
/build
/.idea
*.iml
local.properties
.DS_Store 
theblang
fuente
44
Estoy de acuerdo con tu respuesta También creo que ni los archivos * .iml o .idea deben ser versionados: stackoverflow.com/a/26290130/2948212
diegosasw
77
Mi voto es por tu gitignore, ya que es muy parecido al mío. Sugerencias de pareja: use en build/lugar de /buildpara hacer coincidir los directorios de compilación del módulo como app/build. Se usa .gradlepara hacer coincidir el directorio de almacenamiento en caché de gradle.
Vasily Makarov
También me pregunto por qué el gitignore predeterminado enumera / compila en lugar de compilar / termino con todos los archivos en la aplicación / compilación en mi repositorio si uso / build
guyland123
@ guyland123 Acabo de notar que tengo otro .gitignorearchivo en mi directorio de aplicaciones que también contiene /build. ¿Es esto generado automáticamente, no puedo recordar? Entonces build/, ¿ se aplicará a las subcarpetas?
theblang
@mattblang sí .gitignore se genera automáticamente cuando crea un nuevo proyecto. Sin embargo, no se crea cuando importa un proyecto desde, por ejemplo, Eclipse. build / coincidirá con todos los directorios llamados "build" debajo de la ubicación del archivo .gitignore. P.ej. Se ignorará la aplicación / compilación.
guyland123
37

Yo uso este .gitignore. Lo encontré en: http://th4t.net/android-studio-gitignore.html

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

*/build/

*~
*.swp
helbaroudy
fuente
1
* / build / no ignora los archivos sin cambios en mi directorio de compilación. ¿algunas ideas? @ Resuelto: tuve que agregar * / * / build / ya que mi carpeta de compilación tenía un par de directorios de profundidad.
speedynomads
35

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

  • * .iml
  • .idea
  • construir

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

Siva Velusamy
fuente
3
Gracias por explicar eso. Por lo que he leído si vas a incluir .idea en tu proyecto, debes ignorar * /. Idea / workspace.xml y * /. Idea / task.xml
respectTheCode
15
No ignore la carpeta .idea por ahora. El complemento Gradle aún no tiene ninguna tarea de 'idea gradle' y el proyecto de importación en Android Studio está lejos de ser perfecto ahora.
Robotoaster
2
Además, si está trabajando en un equipo, considere ignorar local.properties porque contiene la ruta sdk codificada.
Calin
@robotoaster, ¿recomendaría no ignorar la carpeta .idea?
loeschg
@Ioeschg ya no es necesario. si paga clean git repo use Import New Project y debería funcionar bien siempre que haya archivos de compilación.
Robotoaster
20

Android Studio 3.4

Si crea un proyecto Gradle con Android Studio, el .gitignorearchivo contendrá lo siguiente:

.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

Recomendaría ignorar el directorio completo ".idea" porque contiene configuraciones específicas del usuario, nada importante para el proceso de compilación.

Carpeta de proyecto 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/
.git/
gradle/
build.gradle
.gitignore
gradle.properties
gradlew
gradle.bat
settings.gradle

Se recomienda verificar los scripts de envoltura de gradle (ver aquí ).

Para que los archivos Wrapper estén disponibles para otros desarrolladores y entornos de ejecución, deberá verificarlos en el control de versiones.

Willi Mentzel
fuente
1
¿Por qué debería mantener binarios como gradlew y gradle.bat?
Bilthon
2
@Bilthon No son binarios. Son scripts de inicio de Gradle para Windows (gradle.bat) y Linux (gradlew).
Willi Mentzel
Ohh ... veo que tienes razón, pero ¿no se autogeneran de todos modos?
Bilthon
2
@Bilthon De hecho, lo son! Se generan con opciones predeterminadas. Si cambia algo, deben incluirse en su repositorio para construirlo correctamente cuando lo revise de nuevo. Son tan pequeños que no está de más mantenerlos siempre.
Willi Mentzel
2
Consulte también este recurso oficial aquí que recomienda explícitamente comprometer los scripts de envoltura de Gradle al control de origen: docs.gradle.org/current/userguide/…
friederbluemle
19

Mi consejo también sería no ignorar la carpeta .idea.

Importé un proyecto Eclipse basado en Git a Android Studio y todo salió bien. Más tarde, quería importar este proyecto con Git (como la primera vez) a otra máquina con Android Studio, pero eso no funcionó. Android Studio cargó todos los archivos pero no pudo "ver" el proyecto como un proyecto. Solo pude abrir archivos Git.

Al importar el proyecto por primera vez (desde Eclipse a Android Studio), mi antiguo .gitignore se sobrescribió y el nuevo se veía así:

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

Entonces, traté de usar un gitignore vacío y ahora funcionó. El otro Android Studio podría cargar los archivos y el Proyecto. Supongo que algunos archivos no son importantes (profiles_settings.xml)para Git y la importación, pero estoy feliz de que funcionó.

Ingo
fuente
De github.com/joeblau/gitignore.io/issues/… : erge Baranov (IntelliJ) 26 de septiembre, 14:23 CEST Dependería del proyecto. Si el proyecto se importa desde Maven o Gradle, los archivos .iml se generan automáticamente y es posible que no se compartan, de lo contrario, estos archivos son esenciales para el proyecto y deben compartirse para que otros usuarios puedan abrir el proyecto después del pago. Los archivos .iml contienen toda la información sobre la configuración del módulo (las raíces, las carpetas de origen, las dependencias, etc.).
Adrian Romanelli
9

Es la mejor manera de generar a .gitignoretravés de aquí.

Jacky
fuente
1
Parece que no puedo hacer que esto funcione para Android Studio. Si solo selecciono "android", parece ser una implementación de Eclipse. ¿Lo estoy haciendo mal?
zipzit
La única mención a Eclipse está en una línea: "Carpeta Proguard generada por Eclipse". El resto parece estar bien para AS
Jose_GD
@zipzit, posiblemente tengas razón. Parece que el sitio genera .gitignore no para Android Studio ya que no contiene .idea /.
CoolMind
1
También existe la opción de Android Studio
Daniyal Javaid el
8

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

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

Por lo tanto, puede configurar hgignore o gitignore en consecuencia.

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

  1. Abra 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 complemento de Gradle suponiendo que su build.gradle es similar 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 el control de origen porque se genera ) y la carpeta .gradle.

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

diegosasw
fuente
55
Chicos, aquellos que votan negativamente deben proporcionar una razón válida para hacerlo. Puede ser útil informarnos a todos si estamos equivocados con nuestra respuesta.
diegosasw
1
There is NO NEEDSí, hay algunos casos: plantillas de derechos de autor que deben compartirse entre los miembros del equipo, por ejemplo.
Henrique de Sousa
8

Apoyo la confirmación de la carpeta .idea (excluyendo workspace.xmly 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. El problema es que si simplemente cambio el nombre del directorio a foo2 (o lo clono en otro nombre de directorio) cuando intente abrir el proyecto en Android Studio, obtendrá tres cosas:

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

No puedo encontrar ninguna 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

linquizar
fuente
Ignoro ambos /.ideay los .imlarchivos. Me gustaría saber por qué se .ideadebe confirmar la carpeta.
theblang
Mirando mi proyecto actual, supongo que solo hay 2 cosas que he verificado desde .idea /: configuración de estilo de código para hacer cumplir para el equipo y un diccionario de usuario que contiene palabras específicas del proyecto que no son palabras reales. Comencé con muchos archivos en .idea comprometidos, pero cuando un archivo comienza a aparecer como modificado sin ningún motivo, se agrega a .gitignore. Mi punto no era tanto que .idea debería registrarse como lo era para decir que los archivos .iml y modules.xml no deberían serlo.
Lo siento, SO tomó mi comentario antes de que terminara (debo recordar que los comentarios no aceptan saltos de línea). Editado con el resto de mis pensamientos.
¡Gracias! Sí, esos archivos que mencionaste tienen sentido. Estoy de acuerdo, el mayor dolor de cabeza fueron los library.xmlarchivos que seguían disparando mensajes. Además, no entiendo por qué sigo viendo a la gente decir que los archivos * .iml deberían incluirse, por lo que es un gran punto allí.
theblang
8

Probado con Android Studio 3.0

Es posible que deba instalar el complemento .ignore .

Puede generar automáticamente el archivo .gitignore para Android. Haga clic derecho en la carpeta y siga

Agregar archivo .gitignore

Luego seleccione Android desde el panel izquierdo y haga clic en Generar

Generar archivo .gitignore

Android Studio generará un archivo .gitignore que contiene todo el archivo que debe ignorar.

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

Menuka Ishan
fuente
7

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

Tienes dos opciones:

  1. Formato basado en directorios (tendrá una .ideacarpeta que contiene los archivos específicos del proyecto)
  2. Formato basado en archivos (los archivos de configuración son .iwsy .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 al control de versiones, excluya workspace.xmly tasks.xml
  2. El .iprarchivo de control de versiones y todos los .imlarchivos del módulo excluyen el .iwsarchivo ya que almacena configuraciones específicas del usuario.

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

embestir
fuente
1
Todos mis proyectos parecen tener carpetas .idea y archivos
.iws
1
Personalmente intenté seguir los consejos de JetBrains, pero no funcionó para mí. Yo y otro desarrollador estamos usando Android Studio y teníamos archivos .idea e .iml en git. Pronto descubrí que una vez que comience a fusionar commits y tenga todo tipo de problemas cuando la herramienta de fusión no pueda fusionar ninguno de los archivos en la ruta .idea. Como resultado, agregué todos los imls y .idea a gitignore. Después de todo, Studio hace un muy buen trabajo al crear la estructura del proyecto al importar el proyecto Gradle. Así que ahora solo presto mucha atención a lo que tengo en mis archivos gradle.
zmicer
5

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 de inmediato (generando lo que falta).
Si no, encuentre lo que falta y asegúrese de que no se ignore, sino que se agregue al repositorio.

Dicho esto, puede tomar ejemplo en .gitignorearchivos 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/
VonC
fuente
11
Esto es incorrecto. Debería registrar sus archivos * .iml y, muy probablemente, también .idea y * .ipr. La parte "todo lo que se genera automáticamente" es especialmente incorrecta. La mayoría de los proyectos de Android se generan automáticamente después de todo.
Sky Kelsey
66
* .Iml, * .idea y * .ipr son específicos de Android-Studio / IntelliJ. Están no necesitan para construir el proyecto. Como son específicos de IDE y no específicos de la cadena de compilación, probablemente no deberían registrarse. Todos pueden usar cualquier IDE, no hay ninguna razón para registrar archivos de proyecto IntelliJ y no Eclipse, por ejemplo.
Marc Plano-Lesay
2
Si desea trabajar en múltiples horquillas del mismo proyecto, o con un equipo donde todos usan el mismo IDE, o tener control de versión de las configuraciones complejas que usa para su IDE, entonces sí, debe registrar los archivos. Archivos de proyecto para IntelliJ son mucho más que simples pelusas utilizadas para abrir su código en un editor.
Sky Kelsey
2
¿por qué mis archivos iml siguen mostrándose entre mi colega y yo? específicamente external.root.project.path sigue cambiando bajo la etiqueta <module />
Sam
Usando Android Studio 0.8.12 en Windows 8.1 y en OS X Mavericks con el mismo proyecto, noto que los dos archivos siguientes se modifican y marcan como modificados por Git cuando abro el proyecto: <nombre del proyecto> .iml y .idea \ misc.xml. Específicamente: <excludeFolder url = "file: // $ MODULE_DIR $ / build / tmp" /> se agrega o elimina a / de <nombre del proyecto> .iml y .idea \ misc.xml se cambia a las diferencias debidas de instalación de JDK entre OS.
jkwuc89
4

Soy kosher al agregar los archivos .iml e Intellij sez para agregar la carpeta .idea pero ignoro .idea / workspace.xml y .idea / task.xml, pero ¿qué pasa con .idea / bibliotecas /?

No veo cómo tiene sentido agregar esto. Tiene una lista de archivos XML que enumeran las bibliotecas que el proyecto de Android Studio debe conocer. En su lugar, se supone que provienen de dependencias definidas 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 debajo .gradle/caches/artifacts-xxxserá diferente para ellos (es decir, artifacts-el número agregado al final se relacionará con la versión de gradle que está utilizando). ) ¿Estos caminos no son universales y, sin embargo, el consejo es verificar todo esto?

zenocon
fuente
4

A partir de Android Studio, el .gitignorearchivo 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
Johnny Doe
fuente
3

Sé que este es un tema antiguo y ciertamente hay muchas opciones, pero realmente prefiero giboSimon Whitaker. Es súper simple de usar, multiplataforma (mac, * nix y windows), y usa el gitignorerepositorio de github por lo que (básicamente) siempre está actualizado.

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

    $ 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, añádelo al archivo .gitignore de tu proyecto:

    $ gibo Android >> .gitignore

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

Sé que esto no responde la pregunta exacta del OP, pero usar gibo lo hace para que ya no tenga que pensar en 'la pregunta'. .. ¡es agradable! ;)

wasatchwizard
fuente
3

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

  • aplicación
  • build.gradle
  • settings.gradle

Estructura básica del proyecto de Android

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 ve en un proyecto básico son archivos de construcción gradle o archivos de configuración de Android Studio.

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

kalan nawarathne
fuente
3

Es mejor agregar la lista .gitignore a través del tiempo de desarrollo para evitar efectos secundarios desconocidos cuando el Control de versiones no funcionará por alguna razón debido a la lista predefinida (copiar / pegar) de alguna parte. Para uno de mis proyectos, la lista de ignorados es solo de:

.gradle
.idea
libs
obj
build
*.log
Tim Long
fuente
3

Github mantiene útiles elementos 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

Sudip Bhandari
fuente
3
Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
imtheman
@imtheman plausible .. He actualizado la respuesta y puse el enlace como referencia
Sudip Bhandari
2

Fusiono 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

Lea: Soporte de JetBrains: cómo administrar proyectos en los sistemas de control de versiones

d.danailov
fuente
2
A partir de 2016, sigo esta respuesta como la más cercana a nuestras necesidades. Gracias
Henrique de Sousa
2

Usando la API proporcionada por gitignore.io , puede obtener que se genera automáticamente. Aquí está el enlace directo también 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
fuente
1

A partir de Android Studio 0.8.4 .gitignore el archivo 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 / compilar para compilar / (Esto incluirá / compilar y / aplicación / compilación) Así que no termino con todos los archivos en la aplicación / compilación en mi repositorio.

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

guyland123
fuente
0

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

Para evitar la importación de todos los archivos, donde Android Studio ignora la lista de "Archivos ignorados", pero aún aprovecha el VCS de Android Studio, hice lo siguiente: Esto usará la lista de "Archivos ignorados" de Android Studio (¡después de la importación! No durante) Y evite tener que usar la engorrosa forma en que Tortoise SVN establece la lista svn: ignore.

  1. Utilice el navegador del repositorio Tortoise SVN para crear una nueva carpeta de proyecto directamente en el repositorio.
  2. Use Tortoise SVN para pagar la nueva carpeta sobre 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 tiene una carpeta de nivel superior versionada con contenido no versionado.
  3. Abra su proyecto desde el directorio de trabajo local. VCS ahora debería habilitarse automáticamente
  4. Establezca sus excepciones de archivo en Archivo -> Configuración -> Control de versiones -> 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 adelante, se ignorarán los "Archivos ignorados" y aún puede administrar VCS desde Android Studio.

Saludos, -Joost

Joost
fuente
0

Android Studio 3.5.3

Lo uso para mis bibliotecas y proyectos y cubre la mayoría de los archivos que genera Android Studio y otras herramientas famosas:

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

Esto se crea utilizando la referencia de http://gitignore.io/ donde puede crear el último archivo gitignore actualizado para cualquier proyecto. Para Android http://gitignore.io/api/androidstudio . Espero que esto ayude. Actualmente estoy usando 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
fuente
-1

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 sobre cosas a tener en cuenta.

estirado
fuente
1
¿Por qué fue rechazado? Los votos negativos sin explicación son lo peor de SO.
Craned
-1

.gitignore de la biblioteca 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
fuente
-1

https://github.com/github/gitignore es una colección increíble

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
shellhub
fuente