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

186

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

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

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

shadox
источник

Ответы:

172

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

Включается поиск Google iml file:

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

этой страницы )

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

Вы используете «сценарии 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 Studio.

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

  • Пусть все используют одну IDE

CommonsWare
источник
1
что произойдет, если я удалю файл iml? все будет хорошо?
E-Place
1
@ E-Place: если вы используете Android Studio, вам нужно будет заново сгенерировать Android Studio, как правило, путем импорта проекта. Android Studio не может функционировать без него.
CommonsWare
как может создан имл? у меня есть больше, чем 4 файла IML
E-Place
@ E-Place: обычно у вас будет один .imlфайл в корне проекта, плюс один .imlфайл в каждом каталоге модуля (например, app/). Вы можете попробовать Инструменты> Android> Синхронизировать проект с файлами Gradle. В противном случае вам может понадобиться повторно импортировать проект. Если у вас есть дополнительные проблемы в этой области, пожалуйста, задайте новый вопрос переполнения стека.
CommonsWare
1
Вы можете сделать так, чтобы все использовали одну и ту же среду IDE, по крайней мере, в отношении *.imlфайлов и .idea/каталогов, при условии, что вы распространяете / синхронизируете файлы, используя gitили подобные им Для git, просто убедитесь, что на файлы, которые вы не хотите синхронизировать, есть ссылки в .gitignoreфайле, как предлагает @Pavel Synek ниже. Вам необходимо удалить их из хранилища и регенерата / восстановить их на месте, но это просто mv, git commitи mv.
Сара Мессер,
76

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

Павел Синек
источник
16
Хорошо, но что они? Как они работают и какое влияние они оказывают? Я просматриваю исходный код другого проекта, и в iml-файле есть модуль, который присутствует только там, например, для gigya, и я не вижу его ни в каком другом месте, кроме манифеста. Итак, этот модуль присутствует в проекте или нет?
shadox
3
.ideaв целом никогда не следует игнорировать. Он содержит несколько файлов, таких как правила lint и пользовательские словари, которые команда обязательно захочет зарегистрировать в системе контроля версий.
M-Pixel
2
Это даже не попытка ответить на вопрос.
маргаритка
12

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

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

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

Красный волк
источник
2

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

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

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

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

Арнав Рао
источник