Was sind IML-Dateien in Android Studio?

185

Was sind IML-Dateien im Android Studio-Projekt? Ich habe gelesen, dass es sich um eine Konfigurationsdatei für Module handelt. Ich verstehe nicht, wie es funktioniert, und kann nicht einfach Gradle-Skripte verwenden, um sie in externe Module zu integrieren, die Sie Ihrem Projekt hinzufügen.

Außerdem generiert AS sie die meiste Zeit, sodass ich das Projektverhalten nicht steuern kann. Wenn ich ein Team habe, das in verschiedenen IDEs wie Eclipse und AS arbeitet, ist es dann möglich, mein Projekt so einzurichten, dass es IDE-unabhängig ist?

Ich verstehe nicht ganz, wie dieses System funktioniert.

Shadox
quelle

Antworten:

171

Was sind IML-Dateien im Android Studio-Projekt?

Eine Google-Suche wird iml fileangezeigt:

IML ist eine Moduldatei, die von IntelliJ IDEA erstellt wurde, einer IDE, die zum Entwickeln von Java-Anwendungen verwendet wird. Es speichert Informationen zu einem Entwicklungsmodul, bei dem es sich um eine Java-, Plugin-, Android- oder Maven-Komponente handeln kann. speichert die Modulpfade, Abhängigkeiten und andere Einstellungen.

(von dieser Seite )

Warum nicht Gradle-Skripte verwenden, um sie in externe Module zu integrieren, die Sie Ihrem Projekt hinzufügen?

Sie verwenden "Gradle-Skripte zur Integration in externe Module" oder Ihre eigenen Module.

Gradle ist jedoch nicht das native Projektmodell von IntelliJ IDEA - das heißt, es wird separat in .imlDateien und die Metadaten in .idea/Verzeichnissen gespeichert . In Android Studio wird dieses Material größtenteils aus den Gradle-Build-Skripten generiert, weshalb Sie manchmal aufgefordert werden, "Projekte mit Gradle-Dateien zu synchronisieren", wenn Sie Dateien wie ändern build.gradle. Dies ist auch der Grund, warum Sie sich nicht die Mühe machen, .imlDateien oder .idea/Versionskontrolle zu speichern , da deren Inhalt neu generiert wird.

Wenn ich ein Team habe, das in verschiedenen IDEs wie Eclipse und AS arbeitet, wie kann ich die Projekt-IDE agnostisch machen?

Zu einem großen Teil können Sie nicht.

Sie können gerne ein Android-Projekt haben, das die Verzeichnisstruktur im Eclipse-Stil verwendet (z. B. Ressourcen und Manifest im Projektstammverzeichnis). Sie können Gradle über build.gradledas Auffinden von Dateien in dieser Struktur beibringen . Andere Metadaten ( compileSdkVersion, Abhängigkeiten usw.) lassen sich jedoch bei weitem nicht so einfach replizieren.

Andere Alternativen sind:

  • Verschieben Sie alle auf ein anderes Build-System wie Maven, das in Eclipse und Android Studio gleichermaßen integriert ist (oder nicht, je nach Ihrer Perspektive)

  • Hoffe, dass Andmore bald startet , damit Sie vielleicht eine Eclipse-IDE haben können, die Android-Projekte aus Gradle-Build-Skripten erstellen kann

  • Lassen Sie alle eine IDE verwenden

CommonsWare
quelle
1
Was passiert, wenn ich die IML-Datei entferne? wird es okay sein?
E-Place
1
@ E-Place: Wenn Sie Android Studio verwenden, muss Android Studio es neu generieren, normalerweise durch Importieren des Projekts. Android Studio kann ohne es nicht funktionieren.
CommonsWare
Wie kann das IML erstellt werden? Ich habe mehr als 4 IML-Datei
E-Place
@ E-Place: Normalerweise befindet sich eine .imlDatei im Projektstamm sowie eine .imlDatei in jedem Modulverzeichnis (z app/. B. ). Sie können Extras> Android> Projekt mit Gradle-Dateien synchronisieren ausprobieren. Andernfalls müssen Sie das Projekt möglicherweise erneut importieren. Wenn Sie weitere Bedenken in diesem Bereich haben, stellen Sie bitte eine neue Frage zum Stapelüberlauf.
CommonsWare
1
Sie können festlegen, dass jeder dieselbe IDE verwendet, zumindest in Bezug auf die *.imlDateien und das .idea/Verzeichnis, vorausgesetzt, Sie verteilen / synchronisieren die Dateien mit gitoder ähnlich. Denn git, so stellen Sie sicher , dass Sie die Dateien nicht synchronisiert werden sollen in der referenzierten .gitignoreDatei, wie @Pavel Synek schlägt vor, unten. Sie müssen sie aus dem Repository und Regenerat löschen / wiederherstellen sie lokal, aber das ist nur mv, git commitund mv.
Sarah Messer
76

In .ideaund *.imlum .gitignore, brauchen Sie nicht diese Dateien erfolgreich importieren und das Projekt kompilieren.

Pavel Synek
quelle
16
Ok, aber was sind sie? Wie funktionieren sie und welche Auswirkungen haben sie? Ich schaue durch die Quelle eines anderen Projekts und es gibt ein Modul in der IML-Datei, das nur dort vorhanden ist, zum Beispiel für Gigya, und ich sehe es an keiner anderen Stelle außer im Manifest. Ist dieses Modul im Projekt vorhanden oder nicht?
Shadox
3
.ideaals Ganzes sollte niemals ignoriert werden. Es enthält mehrere Dateien, wie Flusenregeln und benutzerdefinierte Wörterbücher, die ein Team unbedingt in die Versionskontrolle einchecken möchte.
M-Pixel
2
Dies versucht nicht einmal, die Frage zu beantworten.
Gänseblümchen
12

Es handelt sich um Projektdateien, die die Modulinformationen und Metadaten enthalten.

Fügen Sie einfach *.imlzu .gitignore.

In Android Studio: Drücken Sie CTRL+ F9, um Ihr Projekt neu zu erstellen. Die fehlenden *.imlDateien werden generiert.

Roter Wolf
quelle
2

Diese Dateien werden vom Android Studio-Editor erstellt und verwendet.

Sie müssen diese Dateien nicht zur Versionskontrolle einchecken.

Git verwendet die Gitignore-Datei, die eine Liste von Dateien und Verzeichnissen enthält, um die Liste der Dateien und Verzeichnisse zu ermitteln, die nicht eingecheckt werden müssen.

Android Studio erstellt automatisch .gitingnore-Dateien, in denen alle Dateien und Verzeichnisse aufgelistet sind, die bei keiner Versionskontrolle eingecheckt werden müssen.

Arnav Rao
quelle