本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
报错回顾
昨天导入了一个项目并且对它进行修改,当时是好好的,今天一打开,右下角有个弹窗提示警告信息:
Compilation is not supported for following modules: xxx(我的项目名) Unfortunately you can't have non-Gradle Java modules and Android-Gradle modules in one project.
尝试的解决方案
- 第一反应是:
invalid caches and restart
结果:这个方法对我的项目不奏效。
- 既然提示说问题和Gradle相关,那我就从Gradle入手:
Sync project with Gradle files
结果:同步结束后还是一样
最终解决了问题的方案
将该项目文件路径下的.idea文件夹删除,之后重启Android Studio。
思考:为什么删除.idea能成功?
.idea是什么
.开头的文件是一些临时的缓存文件;.idea就是idea这个IDE为项目生成的临时配置文件。
为什么删除它是有效的
因为这里面的一些配置文件,在每次打开项目时,Gradle都会重新再导入,有可能是产生了冲突或者有缺失。如果是团队开发,.idea还可能会覆盖掉别人的配置。
额外收获
通过阅读参考资料中提到的那篇文章,我还了解到了上传代码到Git仓库时,不应把所有的文件都上传,因为这会暴露隐私。
不应该上传的文件及文件夹有:
- 谨慎上传的文件
- Android artifacts that produce a signed build
- 在IntelliJ IDEA 13 和之前的版本中的dataSources.ids和datasources.xml文件,它们包含数据库密码
- 避免分享下面的文件:
- 对于使用Gradle或Maven的项目,避免分享.iml和.idea/modules.xml文件,因为它们会在导入时生成
?- gradle.xml文件
- 用户字典(dictionaries文件夹)
- .idea/libraries目录下的XML文件,因为它们会从Gradle或Maven项目中生成
参考资料
- 知乎:《为Git仓库里的.idea文件夹正名》
(链接太长,就不贴了,对原文感兴趣的小伙伴可以去搜搜这个标题)