android 程序中的资源ID是怎么来的,又是怎样与实际资源对应的

android程序中,本来有一个R.java可以将资源ID与实际资源一一对应起来可是大部份软件反编译后都找不到R.java这个文件那么它们又是如何将资源ID与实际资源一一... android 程序中,本来有一个R.java可以将资源ID与实际资源一一对应起来
可是大部份软件反编译后都找不到R.java这个文件
那么它们又是如何将资源ID与实际资源一一对应起来的呢
展开
 我来答
小谢005
2013-08-02 · 超过21用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:49.8万
展开全部
其实你可以把R文件看成一个特殊的类。
调用R文件里面的东西。如:R.drawable.b
这就是调用了R类里面的内部类drawable中的b成员变量
b是一个int类型,在R文件中可以看到drawable里面的b=xxxx,、
是一个int类型,你可以简单的理解为xxxx是一个内存地址。
这样就好理解了,其实你编译的时候系统会把资源文件的名字分配一个内存
空间,你调用R.drawable.b的时候其实就是调用了那个内存空间。
通过反编译之后你之所以看不到R文件,那是因为编译的时候
会把R.drawable.b 编译之后是xxx的格式,直接吧内存地址放上,所以此时也
不需要R文件了,如set....View(R.layout.c)编译之后是反编译之后你可以看到的是
set....View(xxxx)的形式

敲字好累。。。。。所以。你懂的
QQMSD8
2015-09-10 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部

android 程序中的资源ID是Android SDK自动生成的,Android SDK会自动生成一个R文件,所有的资源ID都在R文件中。

以下是R文件的说明:

/* AUTO-GENERATED FILE.  DO NOT MODIFY.

 * This class was automatically generated by the

 * aapt tool from the resource data it found.  It

 * should not be modified by hand.

 */

提示开发者,这是一个自动生成的文件,不能手动去修改它。


  1. Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的  id属性值。id属性只能接受资源类型的值也就是必须以@开头的值,例如@id/abc、@+id/xyz等。   

  2. 如果在@后面使用“+”表示当修改完某个布局文件并保存后系统会自动在  R.java文件中生成相应的int类型变量。变量名就是“/”后面的值例如@+id/xyz  会在R.java文件中生成int xyz = value其中value是一个十六进制的数。

  3. 如果  xyz在R.java中已经存在同名的变量就不再生成新的变量而该组件会使用这已存在的变量的值。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式