【个人Android进阶之旅】Android目录过长形成错误:Failed to crunch file abc_textfield_search_activated_mtrl_alpha.9.png

1、编译异常描述

一大早来开发一个新的需求,拉取了一个新的分支,而后导入Android Studio以后,编译就报错了,报错以下所示:
这里写图片描述css

错误具体日志以下所示:android

Information:Gradle tasks [:app:assembleDebug]
Error:Failed to crunch file C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.2.0\res\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png into C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\res\merged\debug\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: Failed to crunch file C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.2.0\res\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png into C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\res\merged\debug\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png
Information:BUILD FAILED
Information:Total time: 2.682 secs
Information:2 errors
Information:0 warnings
Information:See complete output in console

这里写图片描述

Error: Failed to crunch file C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.2.0\res\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png into C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\res\merged\debug\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png
:app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: Failed to crunch file C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.2.0\res\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png into C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\res\merged\debug\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.359 secs
Executing tasks: [:app:assembleDebug]

这里写图片描述

2、解决编译异常

上面是错误信息、编译不成功的缘由是超过了最长限制。windows

解决方法1

在根目录下的build.gradle添加以下bash

buildDir = "C:/tmp/${rootProject.name}/${project.name}"

这里写图片描述

该代码的意思是指定 Project构建结果存放目录 服务器

对好比下所示:
没有添加时候的代码,微信

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

这里写图片描述

添加后的代码:markdown

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
    buildDir = "C:/tmp/${rootProject.name}/${project.name}"
}

添加后编译成功,而且能够运行。
这里写图片描述app

可是编译后的Android Studio画面确实以下所示:maven

这里写图片描述

如上图所示:app这个module貌似单独移出去了同样,感受怪怪的。微信支付

而且在build目录下,并无任何apk文件生成。
这里写图片描述

apk文件都生成到了以前配置的buildDir目录下去了。

buildDir = "C:/tmp/${rootProject.name}/${project.name}"

打开C盘 tem目录 ,能够看到生成的编译产物都在这里。
这里写图片描述

apk生成在 C:\tmp\NetEaseCloudeMusic\app\outputs\apk 目录下。

这里写图片描述

虽然方法1是有效的,可是仍是感受怪怪的,所以我决定使用方法2。

解决方法2

将工程挪到最外层文件夹。

从新从SVN服务器 checkout 一份该分支代码,到目录

C:\Code\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic

这里写图片描述

而后导入到Android Studio 编译,直接编译成功而且成功运行。

来对比一下,以前的目录是

C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic

目录太长了,致使编译失败

这里写图片描述

C:\Code\XTC_NetEaseCloudMusic\branches\APP_NetEaseCloudMusic_UseByAnonymous\NetEaseCloudeMusic\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.2.0\res\drawable-xhdpi-v4\abc_textfield_search_activated_mtrl_alpha.9.png

由于 abc_textfield_search_activated_mtrl_alpha.9.png 总共的路径名有241个字符,超过了windows规定的240个字符。有可能会提示:

Error: File path too long on windows, keep below 240 characters

下面是windows系统的文件目录限制

这里写图片描述

将文件路径缩短以后,编译成功,以下所示:
这里写图片描述

3、总结

出现该bug的最终缘由仍是由于文件目录太长致使的,因此推荐使用方法2将项目目录缩短而后再导入到Android Studio 从新编译方法1总感受会有隐藏bug。

参考文档:

http://stackoverflow.com/questions/33905687/error-file-path-too-long-on-windows-keep-below-240-characters

这里写图片描述

做者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng/article/details/72596381

若是本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。

这里写图片描述

相关文章
相关标签/搜索