Что такое iml-файлы в Android Studio?


107

Что такое iml-файлы в проекте Android Studio? Я читал, что это файл конфигурации для модулей. Я не понимаю, как это работает, и я не могу просто использовать скрипты gradle для интеграции с внешними модулями, которые вы добавляете в свой проект.

Кроме того, большую часть времени AS генерирует их, поэтому я не могу контролировать поведение проекта. Если у меня есть команда, которая работает в разных IDE, таких как Eclipse и AS, возможно ли настроить мой проект, чтобы он был агностиком IDE?

Я не совсем понимаю, как эта система работает.

112

Что такое iml-файлы в проекте Android Studio?

Поиск Google по iml file поворачивает вверх:

IML представляет собой модуль файл, созданный IntelliJ IDEA, в среде IDE используется для разработки Java-приложений. Он хранит информацию о модуле разработки, который может быть компонентом Java, Plugin, Android или Maven; сохраняет пути к модулю, зависимости и другие настройки.

(от this page)

почему бы не использовать Gradle скрипты для интеграции с внешними модулями, которые вы добавляете в свой проект.

Вы используете «скрипты градиента для интеграции с внешними модулями» или свои собственные модули.

Однако Gradle не является родным модель IntelliJ IDEA в проект —, который отделен, проводится в .iml файлов и метаданных в .idea/ каталогов. В Android Studio этот материал в основном генерируется из сценариев сборки Gradle, поэтому вам иногда предлагается «синхронизировать проект с файлами Gradle» при изменении файлов, таких как build.gradle. Вот почему вы не утруждаете себя переносом .iml файлов или .idea/ в управление версиями, так как их содержимое будет регенерировано.

Если у меня есть команда, работающая в разных IDE, таких как Eclipse и AS, как сделать проект IDE агностиком?

В значительной степени вы не можете.

У вас есть проект Android, который использует структуру каталогов в стиле Eclipse (например, ресурсы и манифест в корневом каталоге проекта). Вы можете научить Gradle, используя build.gradle, как найти файлы в этой структуре. Однако другие метаданные (compileSdkVersion, зависимости и т. Д.) Не будут почти легко реплицироваться.

Других варианты включают в себя:

  • Перемещения всех на другую систему сборки, как Maven, который в равной степени интегрирован (или нет, в зависимости от вашей точки зрения), чтобы как Eclipse, и Android-студия

  • Надеюсь, что скоро начнется Andmore, так что, возможно, у вас может быть Eclipse IDE, которая может создавать проекты Android из сценариев сборки Gradle.

  • У всех пользователей есть одна IDE

  0

Что произойдет, если я удалю файл iml? все будет хорошо? 17 июл. 162016-07-17 16:16:34

+1

@ E-Place: Если вы используете Android Studio, вам потребуется обновить его для Android Studio, как правило, путем импорта проекта. Android Studio не может работать без него. 17 июл. 162016-07-17 16:18:02

  0

как iml может быть создан? У меня есть более 4-х файлов iml 17 июл. 162016-07-17 16:26:00

  0

@ E-Place: Обычно в корне проекта есть один файл .iml, плюс один файл '.iml' в каждом каталоге модулей (например,' app/'). Вы можете попробовать Tools> Android> Sync Project с файлами Gradle. В противном случае вам может потребоваться повторная импорт проекта. Если у вас есть дополнительные проблемы в этой области, задайте новый вопрос о переполнении стека. 17 июл. 162016-07-17 16:32:48

+1

Вы * можете * использовать все те же IDE, по крайней мере, в отношении файлов '* .iml' и' .idea/', предполагая, что вы распространяете/синхронизируете файлы с помощью' git' или аналогичного. Для 'git' просто убедитесь, что файлы, которые вы не хотите синхронизировать, ссылаются в файле' .gitignore', как предлагает @Pavel Synek, ниже. Вам нужно будет удалить их из репозитория и регенерировать/восстановить их локально, но это всего лишь 'mv',' git commit' и 'mv'. 16 мар. 172017-03-16 17:46:19

  0

Следует отметить, что не только Java-приложение, разработанное с использованием IntelliJ, имеет .iml-файл. У меня есть PhpStorm, который является одним из вариантов IntelliJ, и я разрабатываю с ним веб-приложение, он все равно будет генерировать .iml-файл. 07 июн. 172017-06-07 08:20:27

+1

Искренность в том, что поиск Google теперь подтверждает этот ответ. Хорошая работа :) 27 июл. 172017-07-27 23:53:13


52

Добавить .idea и *.iml в .gitignore, вам не нужны эти файлы, чтобы успешно импортировать и скомпилировать проект.

+7

Хорошо, но что это такое? Как они работают и какое влияние они оказывают? Я просматриваю источник другого проекта, и есть модуль в iml-файле, который присутствует только там, например, для gigya, и я не вижу его ни в каком другом месте, кроме манифеста. Итак, этот модуль присутствует в проекте или нет? 09 июн. 152015-06-09 16:11:00


0

Эти файлы создаются и используются редактором Android Studio.

Вам не нужно проверять эти файлы на контроль версий.

Git использует .gitignore файл, который содержит список файлов и каталогов, чтобы узнать список файлов и каталогов, которые не должны быть проверены.

Android студия автоматически создает .gitingnore файлы перечисляя все файлы и каталоги, которые не нужно проверять в любом управлении версиями.


1

Это файлы проектов, в которых хранятся данные модуля и метаданные.

Просто добавьте *.iml в .gitignore.

В Android Studio: Нажмите CTRL +F9 восстановить свой проект. Будут сгенерированы отсутствующие файлы *.iml.