为什么android会创建R.java文件

时间:2011-04-09 07:39:20

标签: android xml r.java-file

为什么不将数据(strings.xml,main.xml)保留在.xml文件中?为什么要把它转换成R.java?

似乎android可以读取xml(例如androidmanifest.xml)。那么为什么不将strins.xml数据和main.xml数据保留为.xml格式并将这些xml发送到Android设备?

我是新手...也许我最终会看到R.java中还有更多东西,而不仅仅是那些直接来自那些.xml的静态变量。

感谢, 香农

6 个答案:

答案 0 :(得分:1)

这样您就可以轻松地引用您在布局,可绘制和字符串文件中创建的对象。此类表示可以在代码中实例化的所有资源,或者可以在编码中使用

答案 1 :(得分:1)

因此,您可以使用R类对象从代码中轻松引用资源ID,避免编译错误,我认为

答案 2 :(得分:1)

如果您的程序中存在错误,则希望尽早检测到错误。

如果资源保留为XML,则在运行时(测试驱动或用户驱动)将发现任何错误。测试永远不会证明没有所有缺陷,因此您的软件用户可能会发现一些错误!

但是,如果资源在R中转换为源,则编译器将检查对它们的所有引用。任何错误(与资源引用有关)都会在很早的阶段被检测到,早在您的客户看到它们之前。

答案 3 :(得分:0)

将XML内容的id引用转换为代码可以在编码时轻松使用这些引用,并且在编译期间可以看到正确的用法。因此避免了运行时异常。

我不知道这是否是核心原因,但这对我来说很重要: - )。

答案 4 :(得分:0)

R.java是所有资源的处理程序。

您可以创建资源,而R.java会自动在您的代码和资源之间建立连接。您可以轻松地从R获取各种资源,并且android提供了许多支持R.java及其处理程序(那些整数)的API。你t need to manually open a stream to res files, do file reading, images decoding and etc. It非常有意思。

答案 5 :(得分:0)

R.java不包含任何数据。它是在构建过程中由aapt生成的,它准备资源将它们打包到APK中,包括以更易于阅读和解析的格式编译XML文件。 R.java包含静态int成员,它们只是打包资源的索引。

请参阅A Detailed Look at the Build Process,并查看项目的bin/文件夹。