Android Studio中的iml文件是什么?


186

Android Studio项目中的iml文件是什么?我读到它是模块的配置文件。我不了解它是如何工作的,我不能仅仅使用gradle脚本与您添加到项目中的外部模块进行集成。

而且,大多数时候AS都会生成它们,所以我无法控制项目行为。如果我有一个可以在不同的IDE(例如Eclipse和AS)中工作的团队,是否可以设置我的项目以使其与IDE无关?

我不完全了解该系统的工作原理。

Answers:


172

Android Studio项目中的iml文件是什么?

出现Google搜索iml file

IML是由IntelliJ IDEA(用于开发Java应用程序的IDE)创建的模块文件。它存储有关开发模块的信息,该模块可以是Java,Plugin,Android或Maven组件。保存模块路径,依赖项和其他设置。

(从此页面

为什么不使用gradle脚本与您添加到项目中的外部模块集成。

您可以“使用gradle脚本与外部模块集成”或您自己的模块。

但是,Gradle不是IntelliJ IDEA的本机项目模型,它是独立的,保存在.iml文件中,而元数据保存在.idea/目录中。在Android Studio中,这些内容大部分是由Gradle构建脚本生成的,这就是为什么当您更改文件时,有时会提示您“与Gradle文件同步项目”的原因build.gradle。这也是为什么您不必费心放置.iml文件或.idea/进行版本控制的原因,因为它们的内容将被重新生成。

如果我有一个团队在像Eclipse和AS这样的不同IDE中工作,那么如何使项目IDE不可知?

在很大程度上,你做不到。

欢迎您使用Eclipse风格的目录结构(例如,资源和清单根目录中的清单)的Android项目。您可以通过教Gradle build.gradle如何在该结构中查找文件。但是,其他元数据(compileSdkVersion,依赖项等)将几乎不那么容易复制。

其他替代方案包括:

  • 将所有人转移到另一个构建系统(例如Maven),该构建系统已同等集成(或不集成,取决于您的观点)到Eclipse和Android Studio

  • 希望Andmore即将起飞,以便您可以使用Eclipse IDE来从Gradle构建脚本构建Android项目。

  • 让每个人都使用一个IDE


1
如果删除iml文件会怎样?可以吗?
E广场

1
@ E-Place:如果您使用的是Android Studio,则通常需要通过导入项目来让Android Studio重新生成它。没有它,Android Studio无法运行。
CommonsWare

如何创建iml?我有4个以上的IML文件
E-将

@ E-Place:通常,您.iml在项目根目录中将有一个文件,.iml在每个模块目录中(例如app/),将有一个文件。您可以尝试使用工具> Android>用Gradle文件同步项目。否则,您可能需要重新导入项目。如果您在此方面还有其他问题,请询问新的堆栈溢出问题。
CommonsWare

1
可以让每个人都使用相同的IDE,至少对于*.iml文件和.idea/目录,假设你分配/使用同步文件git或相似。对于git,只需确保在文件中引用了您不想同步的.gitignore文件,如下面的@Pavel Synek所建议。你需要从资源库中,并重新生成删除/本地恢复他们,但是这只是mvgit commitmv
莎拉·梅塞尔

76

.idea和添加*.iml.gitignore,则不需要这些文件即可成功导入和编译项目。


16
好吧,那是什么?它们如何工作以及产生什么影响?我正在查看另一个项目的源代码,并且iml文件中仅存在一个模块,例如gigya,除了清单以外,我在其他任何地方都看不到它。那么,该模块是否存在于项目中?
shadox 2015年

3
.idea总体上不应该忽略。它包含几个文件,例如皮棉规则和自定义词典,团队绝对希望将它们检入版本控制。
M-Pixel

2
这甚至都没有试图回答这个问题。
雏菊

12

它们是项目文件,其中包含模块信息和元数据。

只需添加*.iml.gitignore

在Android Studio中:按CTRL+ F9重建项目。丢失的*.iml文件将被生成。


2

这些文件由Android Studio编辑器创建和使用。

您无需检入这些文件即可进行版本控制。

Git使用.gitignore文件(包含文件和目录的列表)来知道不需要检入的文件和目录的列表。

Android Studio会自动创建.gitingnore文件,列出不需要签入任何版本控件的所有文件和目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.