天天看點

Android Studio clean操作 rebuild報錯 specified for property 'resDir' does not exist 解決方案問題描述問題解決總結

問題描述

        今天心血來操,更新了一下Android Studio(2.3.1),然後提示我項目的gradle版本也有新版本,于是我就也點選确定了,然後問題就來了,當我clean之後,IDE的message框一直提示我specified for property 'resDir' does not exist,意思就是說resDir這個屬性不存在,然後我就納悶了,平時的話都會明确說那個檔案那一行有問題,這次卻沒有,不明覺厲,于是我用ctrl+Shift+F全局搜尋,并沒有發現哪裡有,run程式也沒有影響,而是直接成功了,百度谷歌了一翻,都是說項目某個地方有無效或者錯誤的資源,給的解決方案都是将app module下的gradle中,buildTypes中的shrinkResources的值改為false,但是這并沒有什麼用,即使值為true,build依舊報錯,run依舊沒問題,然後我就無語了,這是什麼鬼,

問題解決

        然後我切換項目浏覽模式倒project,就嘻嘻端詳了一番,于是點開了.gradle目錄,發現我裡面有兩個版本的目錄:

Android Studio clean操作 rebuild報錯 specified for property 'resDir' does not exist 解決方案問題描述問題解決總結

然後我思考了一下,就手動把3.3這個檔案夾删除了,clean之後發現沒有報錯了(哈~~有意思)。

總結

網上也有很多更新到Android Studio 2.3之後,都出現了gradle版本不比對的問題,好像是Gradle的一個bug,大家的解決方案也都是把.gradle檔案夾删除之後,再執行clean或者rebuild操作。下面引申學習一下

Android Studio目錄介紹:​​​​​​​​​​​​​​​​​​​​​

        .gradle 是gradle運作以後生成的緩存檔案夾。

        .idea 是android studio/Intellij IDEA工程打開以後生成的工作環境配置檔案夾,包括一些copyright複制版權,編譯,編碼語言,運作配置,工作空間等配置。

        app 檔案夾是你的application module ,其中包含你的源碼src以及編譯生成的東西

      build 檔案夾(這個裡面又有四個檔案夾,其中outputs為生成的apk包存放的地方,其它,另外generated檔案夾也會有某些aidl生成的java檔案在這裡面),以及libs庫,build 檔案夾為編譯時的緩存檔案夾,每次運作時都會生成,同時在運作了gradle

        gradle 檔案夾中包含的是gradle-wrapper.jar檔案,通過配置其中的gradle-wrapper.properties中的distributionUrl 可以給你的項目指定需要使用的gradle版本,這個是個遠端的位址。

        .gitignore 檔案為git版本控制的忽略清單。

        gradle.build為project全局的配置

       gradle.properties 為gradle的參數配置,其中有注釋的java虛拟機的記憶體大小等配置,有使用的repositories倉庫和依賴的gradle腳本。

        *.iml 檔案為Android Studio/ Intellij IDEA為每一個module生成的配置檔案子產品的配置如編譯檔案夾路徑,使用jdk版本等。

        gradlew gradlew.bat 是gradle任務的腳本指令,很長,估計是Linux上面可以用腳本來設定

        local.properties 中配置個人電腦環境中的配置,其實一般也就是SDK在本地電腦的位置

        settings.gradle 檔案中可指定project目錄中的任何一個檔案夾為gradle的module,比如一般預設的指定為include ':app'

這裡要注意的是,上面的有些檔案是可以删除的,不必一起帶着走的,是可以通過build.gradle來生成的,如.gradle .idea build *.iml等檔案。每次當你分發給别人的時候,其他人可以使用open ,選中project中的build.gradle檔案,來建構成一份完整的gradle工程。

clean 與 invalidate caches restart操作介紹:

1,clean操作的作用是清理項目,可以把module中的build檔案夾删除,但是卻不能删除.gradle下的檔案夾。(工具欄  Build  -->     clean project)

2,invalidate caches restart 操作是清理Android studio緩存,像一些資源索引的緩存檔案,執行此操作重新開機後會重建索引。(工具欄  File  -->     Invalidate Caches /Restart...    ->   Invalidate and Restart        重新開機Android studio)

相關學習連結:

http://kvh.io/cn/embrace-android-studio-indepth.html#Invalidate-Cache

https://segmentfault.com/a/1190000002963895

轉載于:https://my.oschina.net/u/2340651/blog/877440