Що таке файли iml в Android Studio?


186

Що таке файли iml в проекті Android Studio? Я прочитав, що це файл конфігурації для модулів. Я не розумію, як це працює, і не можу я просто використовувати сценарії gradle для інтеграції із зовнішніми модулями, які ви додаєте до свого проекту.

Крім того, більшу частину часу AS генерує їх, тому я не можу контролювати поведінку проекту. Якщо у мене є команда, яка працює в різних IDE, таких як Eclipse і AS, чи можливо налаштувати мій проект, щоб він був агностичним?

Я не повністю розумію, як працює ця система.

Відповіді:


172

Що таке файли iml в проекті Android Studio?

Пошук Google увімкнено iml file:

IML - це модульний файл, створений IntelliJ IDEA, IDE, який використовується для розробки програм Java. Він зберігає інформацію про модуль розробки, який може бути компонентом Java, Плагіна, 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

  • Сподіваємось, що Андмор скоро вилітає, так що, можливо, у вас може бути IDE Eclipse, який може створювати проекти Android за допомогою сценаріїв побудови Gradle

  • Всі повинні використовувати одну IDE


1
що трапиться, якщо я видалю файл iml? це буде гаразд?
E-Place

1
@ E-Place: Якщо ви використовуєте Android Studio, вам потрібно буде повторно генерувати Android Studio, як правило, імпортуючи проект. Android Studio не може функціонувати без цього.
CommonsWare

як імл може створити? у мене більше 4 імл-файлів
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в цілому ніколи не слід ігнорувати. Він містить декілька файлів, як правила вказівки та користувацькі словники, які команда абсолютно хотіла б перевірити на контроль версій.
M-Pixel

2
Це навіть не намагається відповісти на питання.
ромашка

12

Вони є файлами проектів, що містять інформацію про модулі та метадані.

Просто додайте *.imlдо .gitignore.

В Android Studio: Натисніть CTRL+, F9щоб відновити проект. *.imlФайли, які відсутні, будуть створені.


2

Ці файли створені та використовуються редактором Android Studio.

Вам не потрібно перевіряти в цих файлах для контролю версій.

Git використовує файл .gitignore, що містить список файлів і каталогів, щоб знати список файлів і каталогів, які не потрібно перевіряти.

Android studio автоматично створює .gitingnore файли, в яких перераховані всі файли та каталоги, які не потрібно реєструвати в будь-якому контролі версій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.