您的位置:首页 > 移动开发 > Android开发

android 无法生成R文件的原因

2015-09-01 17:44 267 查看
android 无法生成R文件是很多android新手经常遇上的问题,特别是导入别人的项目的时候,即使有时候你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即可

三。资源文件问题

这个问题会比较不引人注意也比较难发现,就比如如果一直是正常的,当你导入某些资源后无法为它生成ID,而这时再clean一下项目后,R文件不能生成了,那大多是这个原因,就是资源文件(如图片)不能以关键字作为文件名,如有张图片名为return的文件在里面,就发现怎么样也生成不了R文件,还很难发现得了,这是也可以再clean一下,看控制台,如果是报res/drawable-hdpi/xxx.jpg之类的错,就是资源文件有问题,改一个名字就可以了

四,不知何种原因,可能是配置问题(转义字符的问题).



一般来说,Android项目是的R文件是由系统生成的资源的定义,但是偶尔会出现R文件不同步或是丢失的情况.

不同步的情况,即在RES文件里面已经存在了一项,但是在R.java文件中却还没有定义,

这里可以点击,Project->Clean, 选择项目,然后选中"Start a build immediately",即可重建R文件.

如果R文件丢失,一般网上的推荐的方法是,右键项目文件,点击"Android Tools"->"Fix project properties".

但是有时这种方法也不可用,那就要重新检查一下RES文件夹里面的XML资源文件是否用了转义字符.

使用我在string里面定义了一个名为"str"的字符串常量,如果在常量值里面使用转义(非法)字符,编译的时候

就会出现R文件丢失的情况.

常用到的需要转义的字符有:<>&"'等,有兴趣的可以参考一下网上的文章,下面给出常用的转义后的编码:

转义字符 实际符号 名称

< < 小于号

> > 大于号

& & 和

' ' 单引号

" " 双引号

注意转义字符后面的分号(;)不可省略!

五、SDK版本问题

相信这也是刚学android的人最常遇上的问题,就是引入了别人的demo后无法生成R文件,由于你自己的IDE里没有他们的版本的SDK,这时只要改变一下当前编译用的SDK版本就可了以(改成自己有的版本),如果是Eclipse在project-properties里target=android-版本号,如果AS则在build.gradle里修改即可

以上就是不能生成R文件的一些原因的总结,当然还有其它的原因,这就让大家更多的去发现了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: