ChatGPT解决这个技术问题 Extra ChatGPT

Android Studio 中的 .iml 文件是什么?

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

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

我不完全理解这个系统是如何工作的。


C
CommonsWare

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

iml file 上的 Google 搜索出现:

IML 是由 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/)。你可以试试工具>安卓>将项目与 Gradle 文件同步。否则,您可能需要重新导入项目。如果您在这方面还有其他顾虑,请提出新的 Stack Overflow 问题。
可以让每个人都使用相同的 IDE,至少在 *.iml 文件和 .idea/ 目录方面,假设您使用 git 或类似方式分发/同步文件。对于 git,只需确保在 .gitignore 文件中引用了您不想同步的文件,正如下面@Pavel Synek 所建议的那样。您需要从存储库中删除它们并在本地重新生成/恢复它们,但这只是 mvgit commitmv
P
Pavel Synek

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


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

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

只需将 *.iml 添加到 .gitignore

在 Android Studio 中:按 CTRL + F9 重建您的项目。将生成缺少的 *.iml 文件。


A
Arnav Rao

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

您无需将这些文件签入版本控制。

Git 使用包含文件和目录列表的 .gitignore 文件来了解不需要签入的文件和目录的列表。

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