77

可能重复:
在 Eclipse 中为 Android 开发:R.java 未生成

我已经将一个项目导入到我的 Eclipse IDE 中,但它给了我一个错误,因为 R 文件不是自动生成的。

如何编辑 R 文件以使其符合我的项目要求?

4

26 回答 26

47

另一个 stackoverflow 问题中,有人回答了这个问题:您必须摆脱 xml 文件中的警告和错误(语法和链接)。这加上做一个干净/构建项目。

Project -> Clean,然后选择构建项目的选项。

于 2011-01-22T23:41:23.107 回答
31

我发现这种情况发生在我身上,布局损坏,一切都爆炸了。放松,这就像你第一次学习编程时的那个老错误,你忘记了一个分号,它会产生一百个错误。许多人惊慌失措,按下所有按钮,让事情变得更糟。

解决方案

  • 确保R.链接到的任何内容都没有损坏。如果它坏了,ADK 可能不会重新生成 R。修复 XML 文件中的所有错误
  • 如果您以某种方式击中并import android.R在您的活动中创建,请将其删除
  • 运行项目-> 清洁。这将删除并重新生成 R 和 BuildConfig。
  • 确保Project -> Build Automatically被勾选。
  • 等待几秒钟以使错误消失。
  • 如果它不起作用,请删除 /gen/ 文件夹中的所有内容
  • 如果它仍然不起作用,请尝试右键单击您的项目 -> Android 工具 -> 修复项目属性

如果 R 不再生怎么办

这通常发生在您的 xml 文件损坏时。

  • 检查 XML 文件中的错误,主要在 /res/ 文件夹中
  • 常见的地方是 /layout/ 和 /values/ 特别是如果您最近更改了其中之一
  • 查看AndroidManifest.xml,我发现我经常更改一个字符串,而忘记从AndroidManifest.xml更改字符串名称。
  • 如果找不到问题。右键单击 /gen/ -> 从本地历史记录恢复... -> 勾选 R.java -> 单击恢复。这并不能解决问题,但它会清除额外的错误,使问题更容易找到。

我知道这里已经有很多答案了,但这是谷歌上的第一个链接,所以我在这里编译所有建议,希望它可以帮助其他新手:)

于 2012-08-30T11:09:31.620 回答
15

好的,我修复了它:

当我将清单更改为目标 1.5 版本时,出现了数百万个错误,只有一个与不存在 R 类无关 - 在清单文件属性中,sdk 1.5 中不存在“targetSdkVersion”和“maxSdkVersion”

由于这个 R 类无法生成。

于 2010-01-11T11:15:21.080 回答
14

我有一个类似的问题,在我添加了一些图标和布局文件后,没有重新生成 R.java 文件。我尝试清理和重建,从那以后事情变得更糟了,原来的 R.java 文件消失了,仍然没有重新生成。最终,我意识到生成 R.java 的编译器一定存在编译器错误,而我们没有在控制台中看到这些错误。幸运的是,我之前注意到了

  1. 如果一个 .xml 文件引用另一个不存在且
  2. 文件名中包含大写字母是错误的(为什么禁止这样做,我喜欢驼峰式)。

无论如何,在将我的图标和 .xml 文件重命名为全部小写,然后修复 .xml 文件中的所有引用之后,瞧,重新生成了 R.java。当我停下来吃午饭时,正好赶上感觉良好 :-)

于 2010-04-21T19:14:45.100 回答
8

再次生成 R 文件:

  1. 在 layout->activity_main.xml 中修改一些东西
  2. 保存文件
  3. 项目->清理...

只需删除位于 gen 目录中的 R 文件,然后尝试 Project->Clean。然后再次构建您的应用程序。

于 2012-03-13T15:08:11.503 回答
7

您也可以右键单击project -> Android Tools -> Fix Project Properties. 这应该会导致重新生成 R.java 类。

于 2010-01-11T15:24:43.850 回答
5

我重新打开 Eclipse,编辑我的一个 xml 文件,然后发现我的活动类引用的是 android.R 而不是我的包“R”:-)

于 2011-12-31T16:16:40.193 回答
4

我的问题出在清单文件中。我已经删除了启动器图标,并且没有在 Manifiest 上引用新的 :)

于 2011-12-04T08:06:26.317 回答
4

为了重新生成 R.class,您将不得不尝试多种技术。

  • 从您的 java 源文件中删除任何 R 导入:import R.android
  • 确保通过转到 Window->Show view->Problems 打开“Problems”面板
  • 如果您的 xml 资源中确实存在一些错误,则需要更正这些错误。在我的情况下,我必须更改我的 id 属性以包含“+”号,如下所示:android:id="@+id/grp_txt"
  • 现在继续做项目->清洁
  • 最后做项目->关闭,项目->打开

“+”号表示一个新的资源 ID,并强制 aapt 工具在 R.java 类中创建一个新的资源整数。

于 2012-03-15T02:32:41.290 回答
2

如果您使用 Intellij IDEA,您可以单击 Build - Rebuild Project

于 2010-08-18T10:39:34.220 回答
2

如果您通过“项目清理”意外删除了 Eclipse 中的 R(不要这样做)右键单击您的 Projectfile -> 从本地历史记录恢复...

重新创建你的 R

我的情况:

  • 损坏的 xml 导致 R 中的错​​误。(因为 ä、ö、ü、id 中的字母)
  • 清洁项目删除了我的 R。

我做了什么:

  • 从本地历史重新创建 R
  • 检查我的类中的错误 R 导入(如 import android.R)并删除它们
  • 修复了该 xml 文件并将其内容保存在外部 txt 文件中
  • 从我的项目中完全删除了 xml。
  • 一次运行我的项目
  • 将固定的 xml 放回原处

和...

  • 在像绿巨人一样吓坏之后,无缘无故地给了我女朋友一个大大的拥抱。
于 2012-08-19T08:16:14.590 回答
2

我的问题是我的 XML 文件中的错误。在 Android Common XML Editor 或 Android Common Manifest Editor 中并不总是自动检测到错误,因此请尝试改用常规文本编辑器。例如,不知何故,来自 .java 文件的一些随机乱码已插入到我的清单和 strings.xml 文件中。

右键单击任何 XML 文件(很可能在 /res 文件夹或 AndroidManifest.xml 中)并单击“打开方式”,然后选择“文本编辑器”。确保一切看起来都不错,然后保存。此外,请确保为您的项目启用“自动构建”。我已经删除了我的 R.java 文件并且它是从头开始重建的,所以不需要从本地历史中恢复它。

于 2012-10-17T16:39:59.270 回答
1

例如,尝试将新的“Android XML 文件”添加到该/res/layout文件夹​​。这可能会导致插件重新生成R类。

于 2010-01-11T10:13:23.413 回答
1

您可以只修改 /res 文件夹中的任何 xml 文件,甚至只需添加一个空格并保存,它将重新生成。

于 2010-01-11T10:37:31.470 回答
1

我有同样的问题 - “R”丢失。这里给出的建议都没有帮助。幸运的是,我找到了原因——不知何故 Eclipse 丢失了 Project-Properties-target。它未设置。直到现在我才知道,它做了什么,但把它放回去有帮助。所以,注意力缺失的 R 也可能意味着缺失的目标

于 2011-05-05T14:08:15.337 回答
1

我已经尝试了上述所有解决方案。但不幸的是,他们并没有解决我的问题。将新图片粘贴到可绘制文件夹后,我的 R.java 就消失了。在阅读了这个问题的答案后,我试图删除之前粘贴的图标(在自动启用时),一切都很好。希望这会对某人有所帮助!

于 2011-05-06T18:00:01.463 回答
1

我遇到了这个问题,我只是右键单击我的项目和构建项目的数据包。R 类立即出现在数据包生成中。

于 2011-09-02T12:27:15.750 回答
1

万一其他人在谷歌搜索时发现了这个线程,就像我一样:

有一段时间我遇到了同样的问题,经过一番挖掘后,我注意到 R.java 文件已正确构建,但只有一个源文件被忽略了。这个特定文件的问题是 Eclipse 在顶部“有用地”添加了以下行:

import android.R;

这有效地隐藏了项目 R 的东西。只需删除它,一切都会再次好起来的......

于 2011-09-07T13:29:29.847 回答
1

如果旧的 R 文件已被删除,您可以使用 Eclipse 的“从本地历史恢复”来恢复它。之后,您可能会看到是什么阻止了 Eclipse 构建您的文件(我见过比以前真正帮助解决问题的其他错误)。

于 2012-02-13T17:11:58.367 回答
1

可能您可以转到项目属性并选择 Android 选项,然后定义项目的目标。为该项目应用选定的目标 API 后,它将自动生成 R.java。

于 2012-02-20T04:57:20.627 回答
1

主要是无效布局文件的问题。打开“问题”视图并在 XML 布局文件中查找错误。修复它们,将重新创建 R 类。

就我而言,没有真正的错误。问题视图在 xml 布局中显示错误。编辑器也显示了 xml 错误。只需使用带有'ctrl-f''fixed' xml'error'的自动格式化程序重新格式化xml,然后重新创建R类。

于 2012-02-20T21:40:06.477 回答
0

您可以从项目中删除 R.java 文件,假设您已自动启用构建,它将重新生成。如果您没有自动启用构建,只需转到项目->构建全部

于 2010-01-11T10:51:15.773 回答
0

对我来说,这是一个未定义的字符串值资源……在我手动将它添加到 Strings.xml 后,R 类会自动重新生成!

于 2012-05-12T06:33:32.330 回答
0

从现有项目导入时,通常会发生此问题。尝试修复res文件夹中所有.xml文件以及Manifest文件中的所有错误。最有可能错误显示在“ match_parent ”参数中,将其更改为“ fill_parent ”。清除所有错误后,将出现 R.java。

如果任何 .xml 文件都没有错误。尝试编辑任何 xml 文件(例如删除一个字母并重新输入)然后保存文件,这将导致生成 R.java。

于 2012-07-29T13:53:46.827 回答
0

我有一个问题,findViewById(R.id.edit_text)但返回的是 TextView 而不是 EditText。我认为问题是 R.id 类的 ID 号错误,然后,我清理项目然后它的工作正常。

于 2012-09-06T13:46:20.330 回答
-1

就我而言,这是一个名称不正确的 XML 文件,导致我的 R 文件无法重建。这没有显示在包资源管理器中,但显示在 LogCat 中。留意那里关于您的 res 文件的任何警告。无论您清理项目多少次,在这些错误得到处理之前,R 文件都不会重建。

于 2012-04-09T17:54:56.067 回答