在Android开发过程中,想必都遇到过项目中java文件中的R全部爆红的情况,解决不了很是烦人,下面就根据平时做项目时得出的经验,总结一下常见的原因及其解决方法:
1.首先尝试下基本的处理方法:
在IDE中工具栏处选择build
尝试clean project,然后再进行rebuild project或者是make project
若使用的是IDEA或Android studio,在上述方法尝试后可以尝试工具栏中File->Setting->Invalidate Caches/Restart选项清除缓冲,重启程序自动重新构建项目
2. 检查最近更改的XML文件,这是R文件爆红的常见原因
重新点击build按钮,一般底部build标签内会显示出错的XML文件,可直接点击查看出错的文件
Build console.png
自定义XML内部代码存在错误,例如:
1. 引用的文件文件名发生更改
2. 使用相对布局,在design界面进行调整时,容易出现XML代码内出现错误
这样的错误其实是比较容易找到的,一般IDE中都会有所提示
3. 特别要注意的是,某些XML文件复用时,一定要修改其中组件的ID,避免ID重复
XML文件内出现标签错误,例如:
标签下方出现红色波浪线
这种情况一般是缺少相关的插件,可以在IDE中工具栏处File->Setting->Plugins
在红框处选择bundled,将Android Support插件勾选(如果自己并不清楚相关插件的功能,一般不建议将其取消),然后apply重启即可
Plugins配置.png
3. 资源文件命名不规范
图片资源含有数字
当初在网上看到有说这个原因时,有人说图片资源中包含数字可能会出现R文件丢失,不过我的项目里导入图片包时,就包含带有命名带数字的图片,也照样在代码使用,并没有出现网上那种问题
仔细检查自定义XML文件的命名,分享一个Android XML 的命名规范
4. 以上常见解决方法都尝试过后仍然无法成功build,那么需要从以下几个方面进行排查:
最近在build.gradle添加的依赖可能存在不兼容
这种情况需要根据最近添加的依赖进行注释后再build,需要点耐心,不过一般在github上星级比较高的,使用的人比较多的,一般不会出现这种情况(最近遇到的一次比较棘手的R文件爆红的问题就是这个导致的)
SDK版本问题(常见于刚新建项目时就报错)
android {
compileSdkVersion 26
buildToolsVersion "28.0.1"
defaultConfig {
applicationId "com.xxx.xxx.xxx"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
在build.gradle中,上述代码中compileSdkVersion、targetSdkVersion一定要保持一致
同时需要使用等API Level的platforms,这个可以在File->Setting->Android SDK
SDK Platforms.png
保持build-tools为最新
选择SDK Tools将Android SDK Build-Tools完全勾选,SDK Manager会自动更新build-tools
SDK Build-Tools.png
目前自己遇到的R文件爆红时的解决方法和排查方案如上,都是些自己的经验所得,有什么不对不足的地方希望各位能指出,也希望被R文件爆红折磨的小伙伴们能早日走出深坑,重新踏上开发的征程!