如何强制Android Studio使用相对路径?

时间:2014-12-19 09:13:40

标签: android intellij-idea android-studio

在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

4 个答案:

答案 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问题,还是你设置中的某些内容?