问题描述

        今天心血来操,升级了一下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 res没有生成R文件 java android studio rebuild在哪_缓存文件

然后我思考了一下,就手动把3.3这个文件夹删除了,clean之后发现没有报错了(哈~~有意思)。



总结

网上也有很多升级到Android Studio 2.3之后,都出现了gradle版本不匹配的问题,好像是Gradle的一个bug,大家的解决方案也都是把.gradle文件夹删除之后,再执行clean或者rebuild操作。下面引申学习一下

Android Studio目录介绍:

        .gradle

        .idea 是android studio/Intellij IDEA工程打开以后生成的工作环境配置文件夹,包括一些copyright复制版权,编译,编码语言,运行配置,工作空间等配置。

app

      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

        *.iml

        gradlew gradlew.bat

        local.properties

        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