Co to są pliki IML w Android Studio?

186

Co to są pliki IML w projekcie Android Studio? Przeczytałem, że jest to plik konfiguracyjny modułów. Nie rozumiem, jak to działa, i nie mogę po prostu używać skryptów stopniowych do integracji z modułami zewnętrznymi, które dodajesz do swojego projektu.

Ponadto przez większość czasu AS je generuje, więc nie mogę kontrolować zachowania projektu. Jeśli mam zespół, który działa w różnych IDE, takich jak Eclipse i AS, czy jest możliwe skonfigurowanie mojego projektu, aby był on niezależny od IDE?

Nie do końca rozumiem, jak działa ten system.

shadox
źródło

Odpowiedzi:

172

Co to są pliki IML w projekcie Android Studio?

Pojawia się wyszukiwarka Google iml file:

IML to plik modułu utworzony przez IntelliJ IDEA, IDE używane do programowania aplikacji Java. Przechowuje informacje o module rozwojowym, który może być komponentem Java, Plugin, Android lub Maven; zapisuje ścieżki modułu, zależności i inne ustawienia.

(z tej strony )

dlaczego nie skorzystać ze skryptów stopniowych w celu integracji z modułami zewnętrznymi dodanymi do projektu.

Używasz „skryptów stopniowych do integracji z modułami zewnętrznymi” lub własnych modułów.

Jednak Gradle nie jest rodzimym modelem projektu IntelliJ IDEA - jest osobny, przechowywany w .imlplikach, a metadane w .idea/katalogach. W Android Studio te rzeczy są w dużej mierze generowane ze skryptów kompilacji Gradle, dlatego czasami pojawia się monit o „synchronizację projektu z plikami Gradle” podczas zmiany takich plików build.gradle. Dlatego też nie zawracasz sobie głowy umieszczaniem .imlplików lub .idea/kontrolą wersji, ponieważ ich zawartość zostanie zregenerowana.

Jeśli mam zespół, który pracuje w różnych IDE, takich jak Eclipse i AS, jak sprawić, by IDE projektu było agnostyczne?

W dużej mierze nie możesz.

Zapraszamy do posiadania projektu na Androida, który wykorzystuje strukturę katalogów w stylu Eclipse (np. Zasoby i manifest w katalogu głównym projektu). Możesz nauczyć Gradle, build.gradlejak znaleźć pliki w tej strukturze. Jednak inne metadane (compileSdkVersion , zależności itp.) Nie będą tak łatwo replikowane.

Inne alternatywy to:

  • Przenieś wszystkich do innego systemu kompilacji, takiego jak Maven, który jest równie zintegrowany (lub nie, zależnie od twojej perspektywy) zarówno w Eclipse, jak i Android Studio

  • Mam nadzieję, że Andmore wkrótce wystartuje , więc być może możesz mieć środowisko IDE Eclipse, które może budować projekty na Androida ze skryptów kompilacji Gradle

  • Niech wszyscy używają jednego IDE

CommonsWare
źródło
1
co się stanie, jeśli usunę plik IML? będzie dobrze?
E-Place,
1
@ E-Place: Jeśli korzystasz z Android Studio, musisz go ponownie wygenerować, zazwyczaj importując projekt. Android Studio nie może bez niego działać.
CommonsWare 17.07.16
jak można stworzyć IML? Mam więcej niż 4 pliki IML
E-Place
@ E-Place: Zwykle będziesz mieć jeden .imlplik w katalogu głównym projektu, plus jeden .imlplik w każdym katalogu modułu (np app/.). Możesz spróbować Narzędzia> Android> Synchronizuj projekt z plikami stopniowymi. W przeciwnym razie konieczne może być ponowne zaimportowanie projektu. Jeśli masz dodatkowe obawy w tym obszarze, zadaj nowe pytanie dotyczące przepełnienia stosu.
CommonsWare 17.07.16
1
Możesz sprawić, by wszyscy używali tego samego IDE, przynajmniej w odniesieniu do *.imlplików i .idea/katalogu, zakładając, że dystrybuujesz / synchronizujesz pliki za pomocą gitlub podobnie. Po gitprostu upewnij się, że w pliku znajdują się pliki, których nie chcesz synchronizować .gitignore, jak sugeruje @Pavel Synek poniżej. Trzeba je usunąć z repozytorium i zregenerować / przywrócić je lokalnie, ale to po prostu mv, git commiti mv.
Sarah Messer
76

Dodaj .ideai *.imldo .gitignore, nie potrzebujesz tych plików, aby pomyślnie zaimportować i skompilować projekt.

Pavel Synek
źródło
16
Ok, ale czym one są? Jak działają i jaki mają wpływ? Przeglądam źródło innego projektu i w pliku iml jest moduł, który jest obecny tylko tam, na przykład gigya i nie widzę go w żadnym innym miejscu poza manifestem. Czy ten moduł jest obecny w projekcie, czy nie?
shadox
3
.ideajako całość nigdy nie powinno być ignorowane. Zawiera kilka plików, takich jak reguły szarż i słowniki niestandardowe, które zespół absolutnie chciałby sprawdzić w kontroli wersji.
M-Pixel
2
To nawet nie próbuje odpowiedzieć na pytanie.
stokrotka
12

Są to pliki projektu, które zawierają informacje o module i metadane.

Po prostu dodaj *.imldo .gitignore.

W Android Studio: naciśnij CTRL+, F9aby odbudować swój projekt. Brakujące *.imlpliki zostaną wygenerowane.

Czerwony wilk
źródło
2

Pliki te są tworzone i używane przez edytor Android Studio.

Nie trzeba rejestrować tych plików w celu kontroli wersji.

Git używa pliku .gitignore, który zawiera listę plików i katalogów, aby poznać listę plików i katalogów, które nie muszą być rejestrowane.

Android studio automatycznie tworzy pliki .gitingnore z listą wszystkich plików i katalogów, które nie muszą być rejestrowane w żadnej kontroli wersji.

Arnav Rao
źródło