android项目里的R文件有什么用?注释写的意思是IDE生成的,不会写进apk里面?
答案:2 悬赏:0
解决时间 2021-01-11 01:32
- 提问者网友:戎马万世
- 2021-01-10 06:15
android项目里的R文件有什么用?注释写的意思是IDE生成的,不会写进apk里面?
最佳答案
- 二级知识专家网友:执傲
- 2021-01-10 06:54
R文件里面定义了R类,R类又包含了好几个内部类:drawable, layout, id等等,每个内部类中定义了一系列常量,每个常量标识一个资源:布局、字符串、图片等。
在编译打包生成APK后,是不会有R文件的。因为R文件中的所有常量全部写入了代码中。
如果你有所怀疑,可以用反编译软件看一下,是不是这样。追问R类对开发有影响吗?追答开发的时候当然有影响了,没有它程序都无法编译的。不过,R文件是系统维护的,你把它删除了也不太要紧。只要你的资源文件中没有错误,它能够自动生成,你每次Build时,它会优先生成,然后再开始编译。看一下Android程序编译过程图:
下面一张图,说明资源ID的作用:
追问也就是说,如果R文件里面没有内容,在它building的时候,会根据项目资源在内存中生成编译一个R.class?
我之所以会这样想,是因为资源值并没有写进硬盘里的R.java,编译之后R.java里面还是没有内容,程序正常运行。
如果编译器再编译的时候会在内存中生成编译一个R.class,那么磁盘里的R.java是给开发人员做资源索引的?
我的推测正确吗?追答R文件中定义的是res目录下资源的索引,当然并非所有该目录下的资源都有索引,比如某个layout文件中的某个TextView就可以不要索引。
有索引的资源在编译时可以得到优化,注意这个索引的定义是有规律可循的。
编译时会先生成R.java文件,至于你的电脑上没有是你的Android编程环境存在问题,R.java会继续编译成R.class
开发人员不关心R文件中是如何对资源进行索引的,只是Android编程模型中需要根据资源ID来获取资源对象。
R文件的存在是因为Android将控制及布局写在了xml文件中,R中的资源ID充当了从xml中的资源描述到内存中的资源对象之间的一个桥梁。想想看没有R文件中的资源ID,你如何获取一个布局中的一个button对象?
所以,你的结论“磁盘里的R.java是给开发人员做资源索引的“我也赞同。
在编译打包生成APK后,是不会有R文件的。因为R文件中的所有常量全部写入了代码中。
如果你有所怀疑,可以用反编译软件看一下,是不是这样。追问R类对开发有影响吗?追答开发的时候当然有影响了,没有它程序都无法编译的。不过,R文件是系统维护的,你把它删除了也不太要紧。只要你的资源文件中没有错误,它能够自动生成,你每次Build时,它会优先生成,然后再开始编译。看一下Android程序编译过程图:
下面一张图,说明资源ID的作用:
追问也就是说,如果R文件里面没有内容,在它building的时候,会根据项目资源在内存中生成编译一个R.class?
我之所以会这样想,是因为资源值并没有写进硬盘里的R.java,编译之后R.java里面还是没有内容,程序正常运行。
如果编译器再编译的时候会在内存中生成编译一个R.class,那么磁盘里的R.java是给开发人员做资源索引的?
我的推测正确吗?追答R文件中定义的是res目录下资源的索引,当然并非所有该目录下的资源都有索引,比如某个layout文件中的某个TextView就可以不要索引。
有索引的资源在编译时可以得到优化,注意这个索引的定义是有规律可循的。
编译时会先生成R.java文件,至于你的电脑上没有是你的Android编程环境存在问题,R.java会继续编译成R.class
开发人员不关心R文件中是如何对资源进行索引的,只是Android编程模型中需要根据资源ID来获取资源对象。
R文件的存在是因为Android将控制及布局写在了xml文件中,R中的资源ID充当了从xml中的资源描述到内存中的资源对象之间的一个桥梁。想想看没有R文件中的资源ID,你如何获取一个布局中的一个button对象?
所以,你的结论“磁盘里的R.java是给开发人员做资源索引的“我也赞同。
全部回答
- 1楼网友:末日狂欢
- 2021-01-10 07:25
.R文件里的内容是系统自动生成的,你不用管。里面存的一般都是控件或布局的id,例如你在调用布局是都是R.layout.XX,调用控件R.id.XX,这里使用的都是整形的id,而不会调用控件本身。追问但是我语法无误,R类里面什么都没有。追答看看你的res文件夹中是不是哪个文件有错误,如果有错误就会不生成.R文件,如果无误的话重新编译一下试试。。。追问谢谢您能够抽出时间来帮助我。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯