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 建议的那样,如下所示。您需要从存储库中删除它们并在本地重新生成/恢复它们,但这只是mvgit commitmv【参考方案4】:

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

【讨论】:

好的,但它们是什么?它们是如何工作的,它们有什么影响?我正在查看另一个项目的源代码,iml 文件中有一个模块仅存在于那里,例如 gigya,除了清单之外,我在其他任何地方都看不到它。那么,该模块是否存在于项目中? .idea 作为一个整体永远不应被忽视。它包含几个文件,例如 lint 规则和自定义字典,团队绝对希望将这些文件签入版本控制。 这甚至没有试图回答这个问题。

以上是关于Android Studio 中的 .iml 文件是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Android studio导入别人项目

Android Studio如何修改项目名称?

SVN:Android Studio设置忽略文件

Android studio .gitignore 文件的内容

Android Studio中SVN的使用

Android Studio源码导入与调试