天天看点

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