【android相关】【问题解决】R.java文件丢失

  在进行android开发过程中,有时候,我们会遇到gen文件中R.java丢失的现象。重新build,或者clean工程,close并重新打开Project,但有时也没解决。

  这可能是由于不小心把xml文件写错了,或者在编辑xml或者其他文件时候点击了run,或者clear过项目等...,反正,你会发现gen下面的R.java的文件找不到了。

  其实,只要xml文件有问题,系统就不会给自动生成R.java文件,因为系统需要参照每个xml里的数据来生成R.java。

  当然,如果项目较大,而layou下xml文件有较多的情况下一个一个看也比较麻烦,这时候,尝试选择刷新项目,并eclipse-->Project-->clean,这个时候,Project中可能就会出现红色的错误信息,根据这个去逐个解决之后,一般就可以了。

  然后,对着工程点击鼠标右键 选择 Build Project,R.java 文件又回来。这样R.xx.xxx 就能 X 的出来了; 如果还没出来,那么可以尝试从别的工程中拷贝一份R文件过来 然后string.xml里随便改动一下 即可更新R文件; 不过要注意,多检查工程,像文件的命名之类,比如我就曾犯过错误,把layout下的文件命名为haoBooks_Content.xml,结果一直不对,需要全部小写就可以了。

  这里记得这个原则:资源的命名规则是不允许有大写字母出现的。另外也不允许下划线_出现。

  那么,我们来看看这个文件到底是做什么的。

  R.java这个文件是会自动生成的,它记录了一些系统的资源信息,不需要我们自己手动去编辑。  

package com.example.haoactivity02;

public final class R {
    public static final class attr {
    }
    public static final class dimen {
        /**  Default screen margins, per the Android Design guidelines. 

         Customize dimensions originally defined in res/values/dimens.xml (such as
         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.

         */
        public static final int activity_horizontal_margin=0x7f040000;
        public static final int activity_vertical_margin=0x7f040001;
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int action_settings=0x7f080006;
        public static final int haobook_content_TextView01=0x7f080005;
        public static final int haobooks_Text01=0x7f080000;
        public static final int haobooks_Text02=0x7f080003;
        public static final int haobooks_button01=0x7f080001;
        public static final int haobooks_button02=0x7f080002;
        public static final int haobooks_button03=0x7f080004;
    }
    public static final class layout {
        public static final int activity_hao_books=0x7f030000;
        public static final int haobooks_content=0x7f030001;
    }
    public static final class menu {
        public static final int hao_books=0x7f070000;
    }
    public static final class string {
        public static final int action_settings=0x7f050001;
        public static final int app_name=0x7f050000;
        public static final int haobook_002=0x7f050003;
        public static final int haobook_content_TextView01=0x7f050002;
        public static final int haobooks_Text01=0x7f050004;
        public static final int haobooks_Text02=0x7f050007;
        public static final int haobooks_button01=0x7f050005;
        public static final int haobooks_button02=0x7f050006;
        public static final int haobooks_button03=0x7f050008;
    }
    public static final class style {
        public static final int AppBaseTheme=0x7f060000;
        /**  Application theme.
 All customizations that are NOT specific to a particular API-level can go here.
         */
        public static final int AppTheme=0x7f060001;
    }
}

  R.java文件中默认有attr、dimen、drawable、id、layout、menu、string、style等静态内部类,每个静态内部类分别对应着一种资源,如layout静态内部类对应layout中的界面文件,其中每个静态内部类中的静态常量分别定义一条资源标识符,比如public static finalint activity_hao_books=0x7f030000;对应的是layout目录下的activity_hao_books.xml文件。
 attr 是控件的属性,一般在res/attr.xml中定义,控件可以使用这里面的资源。目前未定义,所以为空;

  dimen 是屏幕属性,记录屏幕水平还是垂直对齐的一些属性;   
    drawable其实对应了res下的图片文件:ic_launcher.png,不同详述的同名的ic_launcher.png文件在drawable内部类总只有一个icon属性。如果我们在【drawable-*dpi】目录下再添加一幅图片,则内部类中会自动的添加一个icon属性。

    id 是需要找的控件的标示符号,我们常会写findViewById(××××),也就是在找这个ID;
    layout 里面一般是main.xml,是布局相关文件;

    添加资源的命名规则:资源文件只能以小写字母和下划线做首字母,随后的名字中只能出现 [a-z0-9_.] 这些字符,否则R.java文件不会自动更新,并且eclipse会提示错误。
    理解了R.java文件中内容的来源,即当开发者在res/目录中任何一个子目录中添加相应类型的文件之后,ADT会在R.java文件中相应的匿名内部类中国自动生成一条静态int类型的常量,对添加的文件进行索引。如果在layout目录下再添加一个新的界面,那么在public static final class layout中也会添加相应的静态int常量。相反当我们在res目录下删除任何一个文件,其在R.java中对应的记录会被ADT自动删除。
     R.java文件按除了有自动标示资源的索引功能之外,还有另外一个主要的功能,如果res目录中的某个资源在应用中没有被使用到,在该应用被编译的时候系统就不会把对应的资源编译到该应用的APK包中,这样可以节省Android手机的资源。

  对android的基础性文件解释,这个文章有写:http://blog.sina.com.cn/s/blog_b98d87830101c7ee.html,其实刚开始接触的话,看看还是有一定帮助。

 

转载请注明出处:http://www.cnblogs.com/haochuang/ 8年IT工作经验,5年测试技术与管理,2年产品与项目管理,曾参与过云计算\云存储\车联网产品研发工作; 业余自媒体人,有技术类垂直微信公众号;如有招聘或求职方面需求,请Mail to uetest@qq.com ;或通过 QQ:363573922 微博:@念槐聚 联系;

时间: 2024-08-23 20:47:57

【android相关】【问题解决】R.java文件丢失的相关文章

Android开发中R.java文件丢失或无法更新的解决方法

本文分析了Android开发中R.java文件丢失或无法更新的解决方法.分享给大家供大家参考,具体如下: 首先确定你的SDK是新的. 其次接下来检查你的.xml文件,文件名不能大写. 如果xml文件太多 ,那么clean一下你的项目,这时候注意看Console的提示. Console会提示你xml文件错误在哪里 修改完xml文件之后 clean你的项目,再build你的项目 R.java会重新出现或更新 Android 在开发中会自动生成一个 R.java 文件 ,这个文件是自动生成的,最好不要

sdk-Android SDK更新之后新建Android项目会出现R.java文件的报错

问题描述 Android SDK更新之后新建Android项目会出现R.java文件的报错 报错console: R.java was modified manually! Reverting to generated version! 解决方案 Android Studio运行项目报错:java.lang.UnsatisfiedLinkError--.so文件问题eclipse新建android项目后,不会自动生成activity,或者出现This Android SDK requires A

xml-【求助】eclipse新导入的android项目不能生成R.java文件

问题描述 [求助]eclipse新导入的android项目不能生成R.java文件 用eclipse新导入了一个项目,提示R cannot be resolved to a variable.我查看了一下gen文件夹 没有R.java 文件. 按照网上的各种解决办法还是没能解决掉,比如 clean 项目 . Fix Project Properties 等.各位给看看吧,实在不行可以提供源代码. 解决方案 这个资源项在 Android平台的源码里面是private属性的.private属性的资源

android-新建安卓项目没生成R.java文件

问题描述 新建安卓项目没生成R.java文件 大家好,我是做J2EE的,想学android,起步就遇到这个问题,求帮忙!下载的adt-bundle-windows-x86-20140702版本,ADT和eclipse集成在一起的,sdk除了5.0的没下,其他都下载了JDK1.7(之前装过1.6和1.8,效果一样的).试过网上搜到的方法,比如:Clean.Fix Project Properties.更新ADT SDK.点过Is Library.SDK没装全. 新建的空项目,什么都没写,设置的最小

android-Android编程自动生成的r.java文件,里面的代码特别多

问题描述 Android编程自动生成的r.java文件,里面的代码特别多 和视频教程里面看到的都不一样.我用的Android6.0SDK.刚接触Android,什么都不懂,求助各位.谢谢 解决方案 Android R.java文件没有生成android R.java资源文件不自动生成的原因Android: 如何手工生成R.java文件? 解决方案二: 由系统管理的,不用动它. 解决方案三: 这个文件不用动,里边放的是宏以及函数地址. 解决方案四: 系统自动创建的R.java,这个文件相当于资源字

Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法_java

下面给大家介绍几种比较常见的解决办法,具体内容如下: 1.有时候eclipse不自动编译,把project clean一下,让R.java重新生成 2.选择菜单 Project >> Clean ,前提是勾选上 Bulid Automatically(自动构建部署) , 点Clean后会重新构建项目,因为一般情况下,R.java文件在这个时候会重新更新生成一边,如果工程有错,就不会自动生成. 3.选择工程,右键 Android Tools >> Fix Project Proper

如何运行android服务器段的java文件

问题描述 如何运行android服务器段的java文件 如何运行android服务器段的java文件 是把java文件打包成exe文件或者apk文件 windows服务器打包成exe文件 linux打包成apk文件运行么,如何绑定域名啊 解决方案 问题描述的不太清楚,你说的怎么在服务器段运行java程序吗?只要有编译器和运行环境就能运行啊. 如果你是想用java程序做app的后台的话,可以把他们放到tomcat容器里.具体可查"tomcat部署web项目". 服务器就是服务器,Andr

Android AIDL自动生成Java文件测试

/******************************************************************************** * Android AIDL自动生成Java文件测试 * 说明: * 知道有aidl这东西已经挺久了,但是一直没有花时间来系统了解一下其工作机制,现在 * 花点时间一点一点验证一下其功能. * * 2016-5-8 深圳 南山平山村 曾剑锋 ***********************************************

导入新project的时候,R.java文件无法生存

问题描述 fix project property不成功clean project不成功是因为sdk的版本没有选择正确吗?在import project的时候,没找到地方选择sdk的版本 解决方案 肯定是代码有错误, clean一下,然后再重新编译