【個人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

若是本文對您有所幫助,歡迎您掃碼下圖所示的支付寶和微信支付二維碼對本文進行打賞。

這裏寫圖片描述

相關文章
相關標籤/搜索