错误:Windows 上的文件路径太长,请保持在 240 个字符以下
Posted
技术标签:
【中文标题】错误:Windows 上的文件路径太长,请保持在 240 个字符以下【英文标题】:Error: File path too long on windows, keep below 240 characters 【发布时间】:2016-02-27 14:30:12 【问题描述】:所以,我对 build.gradle(app) 文件进行了一些更改,android studio 给了我这个错误(在新标签中打开图像以便更好地查看):
我的 build.gradle(app) 文件(这不是编辑后的文件,我删除了新的代码行,但仍然没有运气/解决方案。):
在我对 build.gradle(app) 文件进行一些更改之前,一切都运行良好,但后来我删除了这些新代码行,android studio 仍然不断给我错误。 该错误与compile 'com.google.android.gms:play-services:8.3.0'有关。 我已经尝试删除/重命名指定文件夹中的那些 png 图像,但是当我重建项目时,png 图像会自动下载。 我的 build.gradle(project) 文件包含 classpath 'com.android.tools.build:gradle:1.5.0'。我想知道是什么导致了这个错误,以及如何解决它?非常感谢。
【问题讨论】:
gradle 使用 relative paths 并编译长项目路径。 android-studio-2.2 适用于绝对路径。有没有办法告诉 android-studio-2.2 使用相对路径? 【参考方案1】:您也可以尝试更改项目的构建目录,因为大多数路径问题都会出现在该目录中。在你的根 build.gradle 文件中
allprojects
buildDir = "C:/tmp/$rootProject.name/$project.name"
repositories
...
Android Studio 将接受更改并仍会在项目视图中显示您的新构建位置。这比移动整个项目要容易得多。
编辑
虽然 Windows 10 Insider Preview 现在提供了允许更长文件路径限制的能力,但这些限制目前只有专门启用了对更长文件路径支持的应用才能真正访问。
目前,这些启用了扩展路径的应用程序似乎只是通过 Windows 应用商店安装的应用程序。
目前,Gradle 没有并且可能无法启用此选项以利用增强的 NTFS 文件路径长度。
【讨论】:
最好的解决方案!!!为我工作。只改变构建目录,不需要移动整个项目。 这应该是公认的解决方案,效果很好,对项目本身没有影响。 天才!更新我的gradle后,我突然发生了同样的问题。 (谷歌播放服务使用长得离谱的文件/文件夹名称。)这个解决方案很简单,而且由于生成了构建文件,它不应该在任何人的源代码控制中。因此,此答案通常应该是解决该问题的简单方法。谢谢! 我最好选择这个解决方案,因为它只会影响构建文件夹 刚刚将 buildToolsVersion 更新到最新版本 (24.0.2) 时遇到此错误。突然无法构建项目,这比移动项目文件要容易得多(这可能会破坏我的魔力!)【参考方案2】:我刚刚遇到了同样的问题。我不知道您的确切问题的解决方法,但我找到了解决方法;我看到你的项目有一个很深的文件路径层次结构。为什么不把你的项目从较低的层次上移呢?
例如:C:\Projects\YourProject
这解决了我的问题。
【讨论】:
还有其他一些解决方案,但我认为将项目靠近根目录作为最佳做法,因为它更容易维护更简单的文件层次结构。 在我看来,使用单独的短构建路径可以更轻松地与他人共享项目。无论其他团队成员将他们的项目文件存储在哪里,它都会解决问题。在具有严格文件层次结构规则的公司中,如果他们碰巧使用深度过长的臃肿路径或过长的命名方案,这会有所帮助。但是,如果您自己的命名方案使用过长的包/文件名,那么短的构建路径将无法解决任何问题。如果是这种情况,您当然应该缩短根项目路径。在一天结束的时候,尽管做最适合你的事情。只是我的 0.025 美元 有时你没有改变来调整文件层次,因为你解压了你项目中的一些档案,等等。那么如果你想清理解压的档案,你怎么能用 gradle 删除它呢?对于我的项目,它不能在 Windows 下运行。 对我上面的评论的补充:我用这个单一的方法创建了一个 Java 类: public static void cleanDir(File dir) File[] files = dir.listFiles(); if (files != null) for (File f : files) if (f.isDirectory()) cleanDir(f); f.delete();然后在我的 build.gradle 任务中,我使用要删除的目录的文件引用调用此方法。此目录路径可能超过 240 个字符,这是 Windows 的限制。【参考方案3】:问题原因: 'C:\users...\commom_google_signin_btn_text_dark_normal.9.png' 图标路径长度大于 240 个字符,超过了最大文件路径长度限制 Windows 操作系统。
解决方案是:将您的项目移动到***目录,如“C:\your_project”或减少项目名称的长度。
这里是windows路径限制图
【讨论】:
【参考方案4】:作为实际移动项目的一个非常可靠的替代方案,我建议使用硬链接。它的语法是这样的
mklink /J C:\AndroidProjects\ProjectName C:\MyVeryVeryVeryVery…VeryVeryVeryLongPath\ProjectName
现在您可以在 C:\AndroidProjects\ProjectName 中处理您的项目,并在您的项目应有的位置进行更改。
【讨论】:
听起来是个好主意,但现在出现 javascript out of heap memory 错误。伤心,因为这正是我建议的解决方法!【参考方案5】:我同意 Vladimir Dimov 的回答。 您必须为项目选择短路径,因为在 Windows 上文件路径应少于 240 个字符。 这个链接可以帮助我:http://www.feelzdroid.com/2016/01/android-studio-error-file-path-too-long-windows.html
【讨论】:
【参考方案6】:作为对 lodock 答案的补充,如果您有很多同名的项目,您可以在项目路径上使用哈希:
import java.security.MessageDigest
def hashString(String s)
MessageDigest.getInstance("SHA1").digest(s.bytes).encodeHex().toString()
allprojects
buildDir = "C:/AB/$hashString(projectDir.getAbsolutePath())"
【讨论】:
【参考方案7】:缩短项目路径确实有点小题大做,Ivan Neeson 的回应似乎是前进的方向。
如果您有幸使用了 Android Studio,那么您会看到一条关于文件长度的有用错误消息。 但是,如果您在执行命令行 ionic 构建时遇到同样的问题,您将看到 png 文件是否存在某种紧缩错误,并且不是那么明显。
真正的问题是 Google Play 服务具有如此奢侈的文件名,例如 common_google_signin_btn_text_light_normal_background.9.png 这根本不适合 Windows。将其转储到 Android 构建中,路径在我们的控制范围之外爆炸到 platform\android\build\intermediates\exploded-aar\com.google.android.gms\play-services-base\10.2.1\res\drawable-xhdpi- v4\common_google_signin_btn_text_light_normal_background.9.png
【讨论】:
【参考方案8】:看看这个http://feelzdroid.com/2016/01/android-studio-error-file-path-too-long-windows.html。解决方法太简单了,文件夹路径不要超过 240 个字符。
确保路径中的包机少于 240 个
【讨论】:
【参考方案9】:当我在同一个文件夹中有两个重复的文件夹时,我发现了这个问题,
E:\project-one\project-one
当它有很长的文件夹名称时,
E:\project-one-with-very-big-name
为了避免这个问题,让项目的文件夹简单而简短。
【讨论】:
【参考方案10】:你应该让你的项目目录尽可能的不深 例如:- D:/AndroidWorkSpace/项目名称
因为 Gradle 仅支持 240 字符长度的项目路径
谢谢
【讨论】:
Gradle 是问题所在,而不是 Android Studio。【参考方案11】:您可以使用 NTFS 连接点为您的项目创建更短的路径。 要了解有关 Junctions 的更多信息,请阅读以下内容: Hard Links and Junctions
联结(也称为软链接)与硬链接的不同之处在于它引用的存储对象是单独的目录,并且联结可以链接位于同一台计算机上不同本地卷上的目录。否则,联结点的操作与硬链接相同
【讨论】:
【参考方案12】:对于 Windows 用户:
您可能想为项目根文件夹创建一个网络共享,然后映射到它。这种技术会缩短整体路径长度,但由于难以检测到修改的文件,会导致 Android Studio 出现问题。更好的解决方案是使用 windows subst 命令。这是一个规避问题的示例脚本。根据需要调整名称并修改以指向您的项目和安装目录。
文件:launchAS.cmd
subst P: "C:\private\java42\ide\42g\workspaces\AndroidStudioProjects"
cd "C:\private\java42\programs\android-studio-base\bin"
start studio64.exe
上述命令将创建一个 P: 驱动器并将其映射到项目根文件夹。这将减少项目文件的整体路径长度,并可能让您缓解路径名称过长的问题。使用 P:\,因为您在打开项目时会使用长根名称。
要删除映射使用命令:subst P: /d
【讨论】:
【参考方案13】:我遇到了同样的问题,我的项目在 C 驱动器中并且它位于更深的路径位置,我所做的只是将我的项目移动到其他较低的深度路径位置并且它可以工作,你只需更改项目位置和项目不应位于较深的位置层次结构中。
【讨论】:
【参考方案14】:我对这个问题有不同的体验。首先我有这个错误,但后来我注意到我以前在同一目录中的项目正在打开。这是路径:
C:\Users\koralis\Documents\extraction\Ex_Files_Android_App_Dev_LDS_Upd\Exercise Files\Ch01\01_06\ImageAssets
令人惊讶的是,我将 gradle 版本更新为 'com.android.tools.build:gradle:3.2.1' 来自 'com.android.tools.build:gradle:2.0.0'
这解决了我的问题。
【讨论】:
以上是关于错误:Windows 上的文件路径太长,请保持在 240 个字符以下的主要内容,如果未能解决你的问题,请参考以下文章