Que sont les fichiers iml dans Android Studio?

190

Que sont les fichiers iml dans le projet Android Studio? J'ai lu qu'il s'agit d'un fichier de configuration pour les modules. Je ne comprends pas comment cela fonctionne et je ne peux pas simplement utiliser des scripts gradle pour intégrer des modules externes que vous ajoutez à votre projet.

De plus, la plupart du temps, AS les génère, je ne peux donc pas contrôler le comportement du projet. Si j'ai une équipe qui travaille dans différents IDE comme Eclipse et AS, est-il possible de configurer mon projet pour qu'il soit indépendant de l'IDE?

Je ne comprends pas parfaitement comment ce système fonctionne.

shadox
la source

Réponses:

175

Que sont les fichiers iml dans le projet Android Studio?

Une recherche Google sur iml fileapparaît:

IML est un fichier de module créé par IntelliJ IDEA, un IDE utilisé pour développer des applications Java. Il stocke des informations sur un module de développement, qui peut être un composant Java, Plugin, Android ou Maven; enregistre les chemins de module, les dépendances et d'autres paramètres.

(à partir de cette page )

pourquoi ne pas utiliser des scripts gradle pour s'intégrer aux modules externes que vous ajoutez à votre projet.

Vous «utilisez des scripts gradle pour intégrer des modules externes», ou vos propres modules.

Cependant, Gradle n'est pas le modèle de projet natif d'IntelliJ IDEA - c'est-à-dire séparé, conservé dans des .imlfichiers et les métadonnées dans des .idea/répertoires. Dans Android Studio, ces éléments sont en grande partie générés à partir des scripts de construction Gradle, c'est pourquoi vous êtes parfois invité à "synchroniser le projet avec les fichiers Gradle" lorsque vous modifiez des fichiers comme build.gradle. C'est aussi pourquoi vous ne vous souciez pas de mettre des .imlfichiers ou .idea/de contrôler la version, car leur contenu sera régénéré.

Si j'ai une équipe qui travaille dans différents IDE comme Eclipse et AS, comment rendre le projet IDE agnostique?

Dans une large mesure, vous ne pouvez pas.

Vous êtes invités à avoir un projet Android qui utilise la structure de répertoires de style Eclipse (par exemple, ressources et manifeste dans le répertoire racine du projet). Vous pouvez apprendre à Gradle, via build.gradle, comment trouver des fichiers dans cette structure. Cependant, d'autres métadonnées ( compileSdkVersion, dépendances, etc.) ne seront pas aussi facilement répliquées.

D'autres alternatives incluent:

  • Déplacez tout le monde vers un autre système de construction, comme Maven, qui est également intégré (ou non, selon votre point de vue) à la fois à Eclipse et Android Studio

  • J'espère qu'Andmore décolle bientôt, afin que vous puissiez peut-être avoir un IDE Eclipse capable de créer des projets Android à partir de scripts de génération Gradle

  • Demandez à tout le monde d'utiliser un IDE

CommonsWare
la source
1
que se passe-t-il si je supprime le fichier iml? ça ira?
E-Place
1
@ E-Place: Si vous utilisez Android Studio, vous devrez le régénérer d'Android Studio, généralement en important le projet. Android Studio ne peut pas fonctionner sans lui.
CommonsWare
comment l'iml peut créer? J'ai plus de 4 fichiers iml
E-Place
@ E-Place: Normalement, vous aurez un .imlfichier à la racine du projet, plus un .imlfichier dans chaque répertoire de module (par exemple, app/). Vous pouvez essayer Outils> Android> Synchroniser le projet avec les fichiers Gradle. Sinon, vous devrez peut-être réimporter le projet. Si vous avez des préoccupations supplémentaires dans ce domaine, posez une nouvelle question Stack Overflow.
CommonsWare
1
Vous pouvez faire en sorte que tout le monde utilise le même IDE, au moins en ce qui concerne les *.imlfichiers et le .idea/répertoire, en supposant que vous distribuez / synchronisez les fichiers en utilisant gitou similaire. Pour git, assurez-vous simplement que les fichiers que vous ne souhaitez pas synchroniser sont référencés dans le .gitignorefichier, comme le suggère @Pavel Synek, ci-dessous. Vous aurez besoin de les supprimer du référentiel et régénèrent / les restaurer sur place, mais c'est juste mv, git commitet mv.
Sarah Messer
78

Ajoutez .ideaet *.imlà .gitignore, vous n'avez pas besoin de ces fichiers pour importer et compiler le projet avec succès.

Pavel Synek
la source
16
Ok, mais que sont-ils? Comment fonctionnent-ils et quel impact ont-ils? Je regarde la source d'un autre projet et il y a un module dans le fichier iml qui n'est présent que là-bas, pour gigya par exemple et je ne le vois pas ailleurs que dans manifest. Alors, ce module est-il présent dans le projet ou non?
shadox
4
.ideadans son ensemble, ne doit jamais être ignoré. Il contient plusieurs fichiers, tels que des règles de charpie et des dictionnaires personnalisés, qu'une équipe voudrait absolument intégrer au contrôle de version.
M-Pixel
2
Cela n'essaie même pas de répondre à la question.
marguerite
12

Ce sont des fichiers de projet, qui contiennent les informations du module et les métadonnées.

Ajoutez simplement *.imlà .gitignore.

Dans Android Studio: appuyez sur CTRL+ F9pour reconstruire votre projet. Les *.imlfichiers manquants seront générés.

Loup rouge
la source
2

Ces fichiers sont créés et utilisés par l'éditeur Android Studio.

Vous n'avez pas besoin d'archiver ces fichiers pour le contrôle de version.

Git utilise le fichier .gitignore, qui contient la liste des fichiers et répertoires, pour connaître la liste des fichiers et répertoires qui n'ont pas besoin d'être archivés.

Android Studio crée automatiquement des fichiers .gitingnore répertoriant tous les fichiers et répertoires qui n'ont pas besoin d'être archivés dans un contrôle de version.

Arnav Rao
la source