在Android Studio 1.0.2中创建的每个项目都包含几个引用项目自己的绝对路径的文件。 如果我想,我甚至无法移动自己的项目目录,更不用说与其他开发人员共享项目了。
排除app/build
中的文件,这些是包含绝对路径的文件:
.idea/workspace.xml
.idea/modules.xml
.idea/libraries/support_v4_21_0_3.xml
.idea/libraries/appcompat_v7_21_0_3.xml
.idea/gradle.xml
.gradle/2.2.1/taskArtifacts/taskArtifacts.bin
.gradle/2.2.1/taskArtifacts/fileSnapshots.bin
app/app.iml
如何强制Android Studio为所有内容使用相对路径?
编辑:通过试验vanilla IDEA,我将这些绝对路径的起源缩小到特定类型的模块,Android Studio显然总是使用它而不为您提供选择。但我仍然不了解如何根除它们。
在IDEA 14.0.2中,如果使用“应用程序模块”创建空项目或Android项目,则项目不包含任何绝对路径。如果您使用“Gradle:Android Module”创建项目,则它包含与Android Studio项目相同的文件中的绝对路径。
编辑#2:已创建IDEA-134587
答案 0 :(得分:12)
一般情况下,不要将 .iml 文件中的任何内容或 .idea 文件夹的内容视为项目的一部分,并且不要共享任何这些文件,不要将它们检查到源代码管理中,也不要随项目移动它们。将它们视为缓存文件。
Gradle文件是事实的来源,因此如果您遇到绝对路径问题,请关闭项目,删除不可共享的文件,然后从Gradle构建脚本重新导入它。
答案 1 :(得分:4)
我遇到了完全相同的问题,但上面提出的解决方案与JetBrains' advice以及this answer相矛盾。此外,我的同事使用相同的源代码(具有未扩展的路径)和Android Studio版本没有遇到问题,所以我一直在撞墙。
当我们意识到我使用的许多路径都包含符号链接时,我们最终解决了这个问题。在我的例子中,我为~/work
设置了一个符号链接,以便它指向/ some/drive/with/space
。在Android Studio中,我的所有来源均来自~/work/source
而不是/some/drive/with/space/source
。当我更改所有内容以便Android Studio使用实际路径引用内容时,$PROJECT_DIR$
和$MODULE_DIR$
变量神奇地开始工作,我的.iml文件不再被破坏。 YMMV。
TL; DR:不要在项目路径中使用符号链接!
答案 2 :(得分:0)
另外,请确保不要将.gradle中的文件作为共享项目的一部分。
另外,您可能想要共享的一组文件是.idea / copyright下的文件,但这样可以让您拥有共享的版权设置。
因此可能的.gitignore文件可能是:
.gradle
.idea
!.idea /版权/ [YourCopyrightFile] .XML
!.idea /版权/ profile_settings.xml
* .iml
建立
local.properties
答案 3 :(得分:0)
嗯。我只是在这些文件中看不到相同的绝对路径,我只看到对MODULE_DIR和PROJECT_DIR的引用,例如:
./app/app.iml: <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
或:
./.idea/workspace.xml: <entry file="file://$PROJECT_DIR$/.idea/libraries/appcompat_v7_21_0_2.xml">
我想知道这只是Linux问题,还是你设置中的某些内容?