¿Qué son los archivos iml en Android Studio?

186

¿Qué son los archivos iml en el proyecto de Android Studio? Leí que es un archivo de configuración para módulos. No entiendo cómo funciona, y no puedo usar scripts de gradle para integrarlos con módulos externos que agregue a su proyecto.

Además, la mayoría de las veces AS los genera, por lo que no puedo controlar el comportamiento del proyecto. Si tengo un equipo que trabaja en IDE diferentes como Eclipse y AS, ¿es posible configurar mi proyecto para que sea independiente de IDE?

No entiendo completamente cómo funciona este sistema.

Shadox
fuente

Respuestas:

172

¿Qué son los archivos iml en el proyecto de Android Studio?

Aparece una búsqueda en Google iml file:

IML es un archivo de módulo creado por IntelliJ IDEA, un IDE utilizado para desarrollar aplicaciones Java. Almacena información sobre un módulo de desarrollo, que puede ser un componente Java, Plugin, Android o Maven; guarda las rutas del módulo, las dependencias y otras configuraciones.

(desde esta página )

por qué no usar scripts gradle para integrarse con módulos externos que agregue a su proyecto.

Usted "utiliza scripts gradle para integrarse con módulos externos", o sus propios módulos.

Sin embargo, Gradle no es el modelo de proyecto nativo de IntelliJ IDEA, es decir, separado, almacenado en .imlarchivos y los metadatos en .idea/directorios. En Android Studio, esas cosas se generan en gran medida a partir de los scripts de compilación de Gradle, por lo que a veces se le pide que "sincronice el proyecto con los archivos de Gradle" cuando cambia archivos como build.gradle. Esta es también la razón por la que no se molesta en colocar .imlarchivos o .idea/en el control de versiones, ya que sus contenidos se regenerarán.

Si tengo un equipo que trabaja en diferentes IDE como Eclipse y AS, ¿cómo hacer que el IDE del proyecto sea independiente?

En gran medida, no puedes.

Le invitamos a tener un proyecto de Android que utilice la estructura de directorios de estilo Eclipse (por ejemplo, recursos y manifiesto en el directorio raíz del proyecto). Puede enseñarle a Gradle, a través de build.gradle, cómo encontrar archivos en esa estructura. Sin embargo, otros metadatos ( compileSdkVersion, dependencias, etc.) no se replicarán tan fácilmente.

Otras alternativas incluyen:

  • Mueva a todos a otro sistema de compilación, como Maven, que esté igualmente integrado (o no, según su perspectiva) tanto a Eclipse como a Android Studio

  • Espero que Andmore despegue pronto, para que tal vez pueda tener un Eclipse IDE que pueda construir proyectos de Android a partir de scripts de compilación de Gradle

  • Haga que todos usen un IDE

CommonsWare
fuente
1
¿Qué sucede si elimino el archivo iml? estará bien?
E-Place
1
@ E-Place: si está utilizando Android Studio, necesitará que Android Studio lo vuelva a generar, generalmente importando el proyecto. Android Studio no puede funcionar sin él.
CommonsWare
¿Cómo se puede crear el IML? Tengo más de 4 archivos iml
E-Place
@ E-Place: Normalmente, tendrá un .imlarchivo en la raíz del proyecto, más un .imlarchivo en cada directorio del módulo (por ejemplo, app/). Puede probar Herramientas> Android> Proyecto de sincronización con archivos Gradle. De lo contrario, es posible que deba volver a importar el proyecto. Si tiene inquietudes adicionales en esta área, haga una nueva pregunta sobre desbordamiento de pila.
CommonsWare
1
Puede hacer que todos usen el mismo IDE, al menos con respecto a los *.imlarchivos y al .idea/directorio, suponiendo que esté distribuyendo / sincronizando los archivos usando gito similar. Para git, solo asegúrese de que los archivos que no desea sincronizar estén referenciados en el .gitignorearchivo, como sugiere @Pavel Synek, a continuación. Tendrá que eliminarlos del repositorio y regenerado / restaurarlos a nivel local, pero eso es sólo mv, git commity mv.
Sarah Messer
76

Añadir .ideay *.imlque .gitignore, usted no necesita esos archivos para importar y compilar el proyecto con éxito.

Pavel Synek
fuente
16
Ok, pero que son? ¿Cómo funcionan y qué impacto tienen? Estoy buscando la fuente de otro proyecto y hay un módulo en el archivo iml que solo está presente allí, por ejemplo, gigya y no lo veo en ningún otro lugar, excepto manifiesto. Entonces, ¿ese módulo está presente en el proyecto o no?
shadox
3
.ideacomo un todo nunca debe ser ignorado. Contiene varios archivos, como reglas de pelusa y diccionarios personalizados, que un equipo desearía absolutamente controlar en el control de versiones.
M-Pixel
2
Esto ni siquiera intenta responder la pregunta.
Margarita
12

Son archivos de proyecto, que contienen la información del módulo y los metadatos.

Solo agregue *.imla .gitignore.

En Android Studio: presione CTRL+ F9para reconstruir su proyecto. Se *.imlgenerarán los archivos que faltan .

Lobo rojo
fuente
2

Esos archivos son creados y utilizados por el editor de Android Studio.

No necesita registrar esos archivos para controlar la versión.

Git usa el archivo .gitignore, que contiene una lista de archivos y directorios, para conocer la lista de archivos y directorios que no es necesario registrar.

Android Studio crea automáticamente archivos .gitingnore que enumeran todos los archivos y directorios que no es necesario registrar en ningún control de versión.

Arnav Rao
fuente