R.java was modified manually! Reverting to generated version!(R文件丢失异常原因汇总)            

引言:

R文件丢失异常在java开发中是个比较常见的异常,造成这个异常的原因可能非常微小,但是给Android开发者们造成的麻烦可是巨大的,当程序员们费尽千辛万苦,找到自己错在哪里的时候,绝对会对自己的粗心大意而捶胸顿足,哀叹不已。


异常提示:

R.java was modified manually! Reverting to generated version!

或者项目中gen目录下没有生成R文件,运行项目的时候会报错


我的错误:

最近一次我出现这个错误是因为新电脑中的Eclipse中指向的Android sdk路径中带有中文路径,项目workspace中也有中文路径,在我将这两个中文路径改完之后,R文件就重新恢复了。

比较坑的是另一个同事的错误原因,在他出现R文件丢失异常之后,Android技 术组长来看了半天,没有发现哪里错误,最后出动总监大人,总监大人花费了不少时间之后,终于发现错误原因:项目命名为Android_demo,但是其中 的下划线_是中文打出的,不是英文,所以出现了这个问题,同事的电脑是MAC,而我的电脑是windows,我并没有在自己的电脑上找出怎么打出中文的 _,所以出现这个问题的概率还是很小的。


其他原因:

下面我们来说说其他可能造成R文件丢失的原因:


1.项目编码不对,在导入其他人项目的时候可 能出现,在这里要建议大家最好把自己的eclipse编码设置为UTF-8最好,大部分项目都会使用这个编码,如果设置这个编码之后你导入的项目还是出现 乱码、R文件丢失之类的问题,那你可以换成GBK编码,如果你要导入的项目是其他编码,那我只能祝你好运,多花点时间找出这是什么编码。


Eclipse设置默认编码:Window——Preferences——General——workspace,然后在下方的Text file encoding中选择Other——UTF-8(注意,这是一个输入框,不仅仅是下拉选择框,当你找不到GBK编码的时候,可以手动输入)即可。


Eclipse中单独项目设置编码:右键项目——Properties——Resource——Text file encoding,在Other中选择UTF-8即可(这里也可以手动输入编码).


2.xml(包括layout布局、values资源以及其他xml文件)文件出错:可能是你xml格式出错,也可能是你的xml中某些属性忘了设置,甚至可能是你引用了错误的xml文件。

解决办法:xml格式出错的时候一般res文件夹及其子文件夹都会出现一个小叉号,这时候就要好好检查相应的报错的xml文件了,但是如果没有报错,那你可以试试将项目的xml文件都恢复到没有出现异常之前的版本,然后一一检查你修改后的xml文件。


3.xml文件和drawable下资源文件不可以为大写字母和数字

解决办法:将相应文件名改为小写字母或者小写字母和数字混搭的命名。


4.Eclipse或者adt插件版本问题,在adt19版本的时候就出现过bug

解决办法:升级最新已经修复bug的版本或者卸载现有版本,使用成熟的旧版本插件,建议使用android开发官网的ADT


5.项目sdk版本太低或者版本不对

解决办法:右键项目——properties——Android,选择相应的sdk版本,点击Apply——OK即可。


下面还有几种解决措施可以 帮助大家修复R文件丢失异常:

  • 选择Eclipse菜单栏——Project,点击Build Automatically,使其处于勾选状态即可,这样在你修改完项目之后Eclipse就会及时的帮你自动编译,跟新R文件;

  • 选中项目,Project——Clean...,这样会清除掉旧版本的各种生成文件,并产生最新的项目生成文件,跟新R文件;

  • 右键项目,Android Tools——Fix Project Properties,会修复项目中的问题。