android 无法生成R文件的原因剖析
android 无法生成R文件 是件痛苦的事情,即使有时候你xml文件没有错误,他都无法生成。针对此问题,我总结以下几个方面的原因。
一.xml本身有错误
R.java这个文件是会自动生成的,但是如果你不小心xml文件写错了,或者不小心在编辑xml的时候点击了run(其实这个时候会运行这个xml文件,会生成一个同名的xml文件,后缀为xx.out.xml),然后正巧你游clear了一下项目,你可能会发现gen下面的R.java的文件没有了,这个在刚开始的时候很气人,真不知道怎么解决,后来发现,只要xml文件有问题,系统是绝对不会给你自动生成这个R.java文件,因为他要参照你的每张xml里的数据来生成R.java,所以自然就生成不了了。虽然知道了原因但是问题头疼,假如项目的layout xml文件有几十个,这个时候怎么办,难道要一个一个xml的看吗,呵呵,其实也不是,把console中的信息clear一下,然后再clear项目一下,这个时候,console中会有很多红色的信息,参照这个肯定能准确的找到哪个文件报错了。
下面这个事误运行了xml文件,可以看到gen的包不是空的,R.java文件也存在,并且明确的支出了是layout包中的错误
二。编码格式不正确
有时候由于编码格式问题,造成无法生成R文件,此时后,把编码格式变成utf-8即可
三,不知何种原因,可能是配置问题(转义字符的问题).
一般来说,Android项目是的R文件是由系统生成的资源的定义,但是偶尔会出现R文件不同步或是丢失的情况.
不同步的情况,即在RES文件里面已经存在了一项,但是在R.java文件中却还没有定义,
这里可以点击,Project->Clean, 选择项目,然后选中”Start a build immediately”,即可重建R文件.
如果R文件丢失,一般网上的推荐的方法是,右键项目文件,点击”Android Tools”->”Fix project properties”.
但是有时这种方法也不可用,那就要重新检查一下RES文件夹里面的XML资源文件是否用了转义字符.
使用我在string里面定义了一个名为”str”的字符串常量,如果在常量值里面使用转义(非法)字符,编译的时候
就会出现R文件丢失的情况.
常用到的需要转义的字符有:<>&”\’等,有兴趣的可以参考一下网上的文章,下面给出常用的转义后的编码:
转义字符 实际符号 名称
< < 小于号
> > 大于号
& & 和
' \’ 单引号
" ” 双引号
注意转义字符后面的分号(;)不可省略!
这就是我总结无法生成r文件的情况。