R.java文件背后的魔法

时间:2010-01-12 11:10:54

标签: android eclipse eclipse-plugin r.java-file

最近我在R.java文件中遇到了一些问题。现在我决定进行备份并删除文件,看看会发生什么。

什么都没发生,所以我创建了一个空的R.java文件并希望最好。现在Eclipse似乎弄清楚文件被篡改甚至发出警告:

R.java was modified manually! Reverting to generated version!

这就是全部。我尝试手动构建它但没有结果。

所以,我有两个问题:

  1. 我该怎么做才能强制Eclipse重新生成文件
  2. 这里发生了什么?如何创建文件,生成文件的代码在哪里?
  3. 我将不胜感激任何帮助。像往常一样,问题发生在截止日期前几天:)

19 个答案:

答案 0 :(得分:15)

我在编写Android应用程序时遇到了问题,因为无法生成R.java,看似无法解释的错误。

问题原因是我之前在构建期间杀死了Android模拟器。不要那样做!一个线索是几个遗留的* .out.xml文件的出现。

解决方案是选择项目,单击Project-> Clean,然后手动删除所有* .out.xml文件。只有这样我才能点击Run-> Run并成功构建。

还有一件事:我正在使用Eclipse。我必须确保在Package Explorer中选择了项目,而不是只是一些随机源文件。容易不注意!

答案 1 :(得分:7)

R.java是在构建时自动生成的。它的内容基于资源文件(包括布局和首选项)。

当你删除它时,它被重新创建,但是如果你创建了自己的,你将遇到麻烦,因为构建系统不会替换它。

您可以再次删除它(手动或选择Project-> Clean)并重建您的程序。

答案 2 :(得分:4)

我有过几次这个问题,而且大多数情况下是由于“res”文件中的一些错误引起的,检查所有res文件中的所有内容都是正常的,主要是XML,并且在你可以构建之后。

例如,此问题的两个常见原因可能是:

  • 没有在XML文件的样式中正确拼写属性的名称。

  • 没有正确关闭语言环境文件的XML中的字符串。

答案 3 :(得分:3)

我发现了问题 - 我创建了一个9patch图像,其补丁区域仅在Y轴上定义(我试图阻止在另一个上调整大小)。

问题仍然存在:为什么没有关于错误的警告?或者如果有 - 它埋藏在哪里?

答案 4 :(得分:2)

抱歉,请尝试检查Eclipse中的输出。可能是你有一些错误阻止Eclipse完成构建过程(检查你的AndroidManifest.xml,它是否正确?)。我的意思是,你应该检查你所有的资源文件(string.xml,layouts,...)和接口(* .aidl),可能存在一些阻止eclipse生成R.java的问题(语法不一致......)....

答案 5 :(得分:2)

我遇到了同样的问题,我使用大写字母命名了一个资源文件(.png图像)。 (ImageButton001.png代替imagebutton001.png)。

我改变了R.java回来的文件名。

Rgards, 涓

答案 6 :(得分:2)

如果可用内存不足,构建工具将无提示失败(Eclipse不会显示任何错误或报告错误日志中的任何内容)。关闭其他打开的应用程序(例如模拟器和浏览器),然后在应用程序清单文件中添加一个空格并保存。

答案 7 :(得分:1)

正如其他人所说,不要创建自己的R.java文件。我刚开始使用Android时遇到了同样的问题,并且花了一些时间来弄清楚编译错误导致了什么。

你想用R.java文件做什么?

答案 8 :(得分:1)

确保您的清单文件没有错误。 如果删除/res/values/strings.xml中的资源字符串app_name,则它不知道如何正确生成R.java。 我在执行HelloSpinner教程时发现这个问题。

答案 9 :(得分:1)

可以很好地了解的是,如果XML文件包含?,则不会重新生成R.java并且错误不会显示在XML文件中(有时会在一段时间后显示) 我有一行类似于:

< string name="questionmark"\>?< /string> <br>

尝试改变?到了别的地方,看看R.java文件发生了什么 - 为我工作

答案 10 :(得分:1)

正如ponkin所说 - 你可能只有一个问题导致R不能重新生成自己,因为你现在有一百万个问题。

不要试图自己创建R类。试着想一下你一直在搞乱的最后一个XML,并检查它是否有错误

我遇到了同样的问题here

答案 11 :(得分:1)

我发现不需要的资源导致了问题。一旦我删除了资源,就会生成R.java。

答案 12 :(得分:1)

我遇到了类似的问题,我在Raw文件夹中用大写字母重命名了.wav文件。当我更改为全部小写时,清理项目并重建R.java罚款。

答案 13 :(得分:1)

我遇到了这个问题,要重建R.java我剪切了我刚才正在处理的xml文件中的代码(如果这不起作用,请尝试其他文件),删除文件然后创建另一个文件使用相同的名称并将代码粘贴回其中。希望这会有所帮助。

答案 14 :(得分:1)

我遇到了同样的问题。我刚刚去了:

Project -> Properties -> Android 

并为我的项目选择了正确的模拟器,在那一刻我有3种不同的选择。我意识到我在某个特定时刻改变了模拟器。所以尝试更改模拟器,这可能有所帮助!

祝你好运

答案 15 :(得分:0)

我在另一个网站上看到这个,它帮助了我:

“如果这不能解决您的问题,请尝试修改您的AndroidManifest.xml(只需添加一个空格并保存)。我听说这会强制R.java重建。”

所以只需在清单文件中添加一个空格,然后重建!

答案 16 :(得分:0)

IntelliJ遇到了同样的问题。问题是我在strings.xml中定义了两次app_name由于某种原因,IDEA检查没有自动选择它。

答案 17 :(得分:0)

作为旁注,通常那些* .out.xml文件是通过尝试构建项目而生成的,同时xml文件集中在编辑器中

答案 18 :(得分:0)

我有类似的问题。清理项目没有解决问题,代码中没有错误或文件名中的大写或空格。

当您选择PROJECT - &gt; CLEAN然后取消选中“立即开始构建”选项时,解决方案将进入弹出窗口。清理项目。关闭并重新打开Eclipse,然后构建项目(PROJECT - &gt; BUILD)。

问题仍然是为什么简单的清理和构建而不关闭Eclipse不起作用。