18

最近我在使用 R.java 文件时遇到了很多问题。现在我决定做一个备份并删除文件,看看会发生什么。

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

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

这就是全部。我尝试手动构建它,但没有得到任何结果。

所以,我有两个问题:

  1. 我应该怎么做才能强制 Eclipse 重新生成文件
  2. 这里发生了什么?文件是如何创建的,生成文件的代码在哪里?

我将不胜感激任何帮助。像往常一样,问题发生在截止日期前几天:)

4

19 回答 19

15

我在编译我的 Android 应用程序时遇到问题,出现关于无法生成 R.java 的看似莫名其妙的错误。

这个问题是由我之前在构建过程中杀死 Android 模拟器引起的。不要那样做!一个线索是出现了几个遗留的 *.out.xml 文件。

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

还有一件事:我正在使用 Eclipse。我必须确保在包资源管理器中选择了该项目,而不仅仅是一些随机源文件。容易不注意!

于 2010-08-01T15:10:29.207 回答
7

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

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

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

于 2010-01-12T11:33:22.560 回答
4

我多次遇到这个问题,而且大多数情况下是由“res”文件中的一些错误引起的,检查你所有的 res 文件中的一切是否正常,主要是 XML,然后你就可以构建了。

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

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

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

于 2011-09-22T07:44:56.920 回答
3

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

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

于 2010-01-12T13:49:18.683 回答
2

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

于 2010-01-12T11:19:18.233 回答
2

我有同样的问题,我用大写字母命名了一个资源文件(一个 .png 图像)。(ImageButton001.png 而不是 imagebutton001.png)。

更改文件名后,我的 R.java 又回来了。

Rgards,胡安

于 2011-10-22T15:14:45.740 回答
2

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

于 2012-09-28T15:11:40.577 回答
1

正如 ponkin 所说 - 您可能有一个问题导致 R 无法自行重新生成,因此您现在有 100 万零一个问题。

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

我在这里遇到了同样的问题

于 2010-01-12T13:01:14.670 回答
1

正如其他人所说,远离创建自己的R.java文件。我第一次开始使用 Android 时遇到了同样的问题,花了一些时间才弄清楚编译错误是什么原因造成的。

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

于 2010-01-12T17:53:23.030 回答
1

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

于 2010-05-06T06:50:21.963 回答
1

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

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

尝试改变?到别的东西,看看R.java文件会发生什么 - 对我有用

于 2010-05-08T14:15:00.443 回答
1

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

于 2011-05-04T14:26:13.760 回答
1

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

于 2011-12-12T18:25:19.577 回答
1

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

于 2012-07-03T08:02:12.683 回答
1

我有同样的问题。我刚刚去了:

Project -> Properties -> Android 

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

祝你好运

于 2012-10-24T15:08:59.077 回答
0

我在另一个网站上读到了这篇文章,它帮助了我:

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

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

于 2012-03-16T19:21:33.850 回答
0

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

于 2012-06-10T13:01:48.317 回答
0

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

于 2012-11-09T09:25:04.427 回答
0

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

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

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

于 2013-11-01T20:49:49.673 回答