Android Studio “Sync project with Gradle Files”按钮消失问题

##背景
今天用Android studio的过程中,突然发现工程报错,出现sync project这个同步按钮消失不见,懵b了。

##现象描述
1.Sync project with Gradle Files按钮消失不见,app标记红叉
Android Studio “Sync project with Gradle Files”按钮消失问题_第1张图片
2.android project区域也没有东西,难道module被我删了?打开project structure 面板,一脸尴尬(完全不知道什么玩意儿,和往常见的不一样嘛)
Android Studio “Sync project with Gradle Files”按钮消失问题_第2张图片

##解决方案
1.网上搜索,压根没人问这问题,我表示很尴尬,意思说这问题很低级了?我很受打击,又或者我搜索方式不对,我就更受打击
了。
2.各种尝试,project structure面板一顿乱点,希望在下面的log处有些什么提示吧。然后并没有。。
3.看来得重新建工程了?万一下次写了很多代码出了这问题我还不被自己弄死,那就新建了一个project,查看两者文件夹下有什么不一样的地方,发现工程中少了个.iml文件,看来这一切异常基本和这个iml文件有关系了。
4.经过尝试使用,经过尝试,只要重启android studio打开该项目即可(刚开始我拷贝了一份iml文件过来,重启,ok,我以为是拷贝iml文件的原因,后来我想也可能是由于重启后ok的,所以又删了iml文件,重试了一把,发现这文件压根会自己生成嘛)
##原因
到底是什么原因造成的这个问题,那就去搜索一下iml文件的用途,中文相关的问题和回答并没找到,还是用英语在stackoverflow上试试,第一条便是:What are iml files in Android Studio?

引用原文

IML is a module file created by IntelliJ IDEA, an IDE used to develop Java applications. It stores information about a development module, which may be a Java, Plugin, Android, or Maven component; saves the module paths, dependencies, and other settings.

However, Gradle is not IntelliJ IDEA’s native project model — that is separate, held in .iml files and the metadata in .idea/ directories. In Android Studio, that stuff is largely generated out of the Gradle build scripts, which is why you are sometimes prompted to “sync project with Gradle files” when you change files like build.gradle. This is also why you don’t bother putting .iml files or .idea/ in version control, as their contents will be regenerated.

第一段说明了iml文件为idea自动生成,并且里面存储了关于dev module信息等;第二段告诉为什么当你改变build.gradle文件市会提示点击“sync project“;为什么在版本控制中不用加入iml文件和.idea/文件夹下的东西,因为他们会重新生成。

--------------------------------------------------------------注意--------------------------------------------------------------

看到评论区有许多朋友问为什么重启还是不管用,这里统一回答一下,如下: 出现评论区这种现象的原因最大的可能是,你导入的工程不是一个符合android as项目结构的项目,比如你们公司先创建了一个rootproject的仓库,然后又在这个仓库中添加了你们的android工程aproject以及其他文件夹,这个时候你们老大给你的git地址其实是rootproject的地址,这个地址里包含了你们android工工程aproject和一些其他文件,如果你使用as直接用
在这里插入图片描述
来导入git地址所指向的项目,你会发现导入进来的是rootproject整个文件夹的,你的as当然识别不了,你需要使用git先将rootproject 克隆到本地,然后用open的方式找到rootproject文件下的aproject并打开

你可能感兴趣的:(android杂货铺)