Android Studio 3.6.1无法识别新创建布局资源的问题求助
我之前升级Android Studio到3.6.x版本时也碰到过一模一样的问题,折腾了好一阵才找到几个靠谱的解决办法,先给你捋捋可能的原因,再一步步来解决:
可能的原因
主要是版本升级后,旧的缓存、索引文件或者Gradle配置与新的AS版本不兼容,导致新创建的布局资源没有被正确加入到AS的索引系统中,所以才会出现补全失效、跳转失败、假编译错误的情况——而Invalidate Caches/Restart只是临时清空了旧缓存,但没从根本上解决兼容性问题。
具体解决步骤
检查Gradle资源目录配置
打开模块的build.gradle文件,确认sourceSets里的资源目录配置正确,避免AS找不到新创建的布局:android { sourceSets { main { res.srcDirs = ['src/main/res'] // 如果有额外的资源目录也要一并写上,比如src/main/res-layout } } }配置完后点击右上角的
Sync Project with Gradle Files同步项目。手动触发索引重建(无需重启AS)
不用每次都重启,试试这两步:- 点击顶部菜单栏的
File -> Sync Project with Gradle Files - 接着点击
File -> Refresh All
这两个操作会强制AS重新扫描所有资源并重建索引,很多时候能解决新资源不被识别的问题。
- 点击顶部菜单栏的
彻底清理旧缓存与索引文件
有时候Invalidate Caches不够彻底,可以手动删除这些文件:- 关闭Android Studio
- 手动删除项目根目录下的
.idea文件夹,以及每个模块下的build文件夹 - 重新打开AS,等待项目自动Sync完成
这个方法能彻底清除升级后残留的旧配置,亲测解决过很多索引异常的问题。
调整Compiler配置
打开File -> Settings -> Build, Execution, Deployment -> Compiler,取消勾选Configure on demand选项,然后Sync项目。这个选项有时候会导致AS按需编译,跳过部分资源的索引,取消后能强制AS完整扫描所有资源。排查第三方插件兼容性
升级AS后,一些第三方插件(比如布局预览、代码生成类插件)可能版本不兼容,干扰了AS的索引功能:- 打开
File -> Settings -> Plugins - 禁用所有非官方插件,然后重启AS(这一次重启是为了测试)
- 新建布局看问题是否消失,如果消失了,再逐个启用插件排查出有问题的那个,要么升级插件版本,要么暂时禁用。
- 打开
匹配Gradle与AS版本
AS 3.6.1对应的Gradle插件版本是3.6.1,建议搭配Gradle 6.0.1版本使用,版本不匹配也会导致索引异常:- 项目根目录的
build.gradle里确认classpath版本:dependencies { classpath 'com.android.tools.build:gradle:3.6.1' } gradle/wrapper/gradle-wrapper.properties里确认Gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
配置完后Sync项目即可。
- 项目根目录的
内容的提问来源于stack exchange,提问作者DiscDev

