Android Studio 中的 .iml 文件是啥?
Posted
技术标签:
【中文标题】Android Studio 中的 .iml 文件是啥?【英文标题】:What are .iml files in Android Studio?Android Studio 中的 .iml 文件是什么? 【发布时间】:2015-08-24 13:38:46 【问题描述】:android Studio 项目中的.iml
文件是什么?我读到它是模块的配置文件。我不明白它是如何工作的,我不能只使用 gradle 脚本与您添加到项目中的外部模块集成。
另外,大多数时候 AS 会生成它们,所以我无法控制项目行为。如果我的团队在 Eclipse 和 AS 等不同的 IDE 中工作,是否可以设置我的项目使其与 IDE 无关?
我不完全理解这个系统是如何工作的。
【问题讨论】:
【参考方案1】:它们是项目文件,包含模块信息和元数据。
只需将*.iml
添加到.gitignore
。
在 Android Studio 中:按 CTRL + F9 重新构建您的项目。将生成缺少的*.iml
文件。
【讨论】:
【参考方案2】:这些文件由 Android Studio 编辑器创建和使用。
您无需将这些文件签入到版本控制中。
Git 使用包含文件和目录列表的 .gitignore 文件来了解不需要签入的文件和目录的列表。
Android Studio 会自动创建 .gitingnore 文件,列出不需要签入任何版本控制的所有文件和目录。
【讨论】:
【参考方案3】:Android Studio 项目中的 iml 文件是什么?
出现在iml file
上的 Google 搜索:
IML 是由 IntelliJ IDEA 创建的模块文件,IntelliJ IDEA 是一个用于开发 Java 应用程序的 IDE。它存储有关开发模块的信息,可能是 Java、Plugin、Android 或 Maven 组件;保存模块路径、依赖项和其他设置。
(来自this page)
为什么不使用 gradle 脚本与您添加到项目中的外部模块集成。
您确实“使用 gradle 脚本与外部模块集成”,或者您自己的模块。
但是,Gradle 不是 IntelliJ IDEA 的本机项目模型——它是独立的,保存在 .iml
文件和 .idea/
目录中的元数据中。在 Android Studio 中,这些东西主要是由 Gradle 构建脚本生成的,这就是为什么当您更改 build.gradle
之类的文件时,有时会提示您“将项目与 Gradle 文件同步”。这也是您不必费心将.iml
文件或.idea/
放入版本控制的原因,因为它们的内容将被重新生成。
如果我有一个团队在 Eclipse 和 AS 等不同的 IDE 中工作,如何让项目 IDE 不可知?
在很大程度上,你不能。
欢迎您拥有一个使用 Eclipse 风格目录结构的 Android 项目(例如,项目根目录中的资源和清单)。您可以通过build.gradle
教 Gradle 如何在该结构中查找文件。但是,其他元数据(compileSdkVersion
、依赖项等)几乎不会那么容易复制。
其他选择包括:
将所有人转移到另一个构建系统,例如 Maven,它与 Eclipse 和 Android Studio 同等集成(或不集成,取决于您的观点)
希望Andmore 早日起飞,这样也许您可以拥有一个可以从 Gradle 构建脚本构建 Android 项目的 Eclipse IDE
让每个人都使用一个 IDE
【讨论】:
如果我删除了 iml 文件会怎样?会好吗? @E-Place:如果您使用的是 Android Studio,则需要让 Android Studio 重新生成它,通常是通过导入项目。 Android Studio 没有它就无法运行。 如何创建iml?我有超过 4 个 iml 文件 @E-Place:通常情况下,项目根目录下会有一个.iml
文件,每个模块目录下会有一个.iml
文件(例如app/
)。您可以尝试使用工具 > Android > 将项目与 Gradle 文件同步。否则,您可能需要重新导入项目。如果您对此领域还有其他顾虑,请提出新的 Stack Overflow 问题。
您可以让每个人都使用相同的 IDE,至少在 *.iml
文件和 .idea/
目录方面,假设您使用git
或类似的。对于git
,只需确保.gitignore
文件中引用了您不想同步的文件,正如@Pavel Synek 建议的那样,如下所示。您需要从存储库中删除它们并在本地重新生成/恢复它们,但这只是mv
、git commit
和mv
。【参考方案4】:
将.idea
和*.iml
添加到.gitignore
,您不需要这些文件即可成功导入和编译项目。
【讨论】:
好的,但它们是什么?它们是如何工作的,它们有什么影响?我正在查看另一个项目的源代码,iml 文件中有一个模块仅存在于那里,例如 gigya,除了清单之外,我在其他任何地方都看不到它。那么,该模块是否存在于项目中?.idea
作为一个整体永远不应被忽视。它包含几个文件,例如 lint 规则和自定义字典,团队绝对希望将这些文件签入版本控制。
这甚至没有试图回答这个问题。以上是关于Android Studio 中的 .iml 文件是啥?的主要内容,如果未能解决你的问题,请参考以下文章