题 在Eclipse中开发Android:R.java不能重新生成


我发现我的R.java永远不会更新,因此它不包含有关我的新资源的信息,因此我决定删除它并认为Eclipse会生成一个新资源。但这没有发生,我现在没有R.java。我怎样才能再生一个?

我正在使用Windows 7。

从其中一条评论:“做 项目  - > 清洁 是什么造成了我的问题。清理删除了R.java ......无论出于何种原因,插件都没有重新生成文件。“


298


起源


清理时我的解决方案不起作用:我需要在SDK管理器中下载Build Tools,然后重新启动系统。我有ADT 22.3.0。 - ananda


答案:


这个网站 建议:

如果在项目上运行clean,它应该重新生成所有生成的Java文件,即R.

...和...

在Eclipse中,在“项目”菜单下,是一个自动构建选项。   这将有助于您每次修改时都构建R.java文件   制作。项目中也有清洁...选项。

这个网站 建议另一个解决方


174



做项目 - >清洁并不总能解决问题。 - Igor Ganapolsky
做项目 - >清洁是导致我的问题的原因。清理会删除R.java ...并且无论出于何种原因,插件都不会重新生成文件。 - Cerin
当我链接到需要不同于我安装的Android支持API版本的库时,我弹出了这个。依赖关系不起作用,之后我的R没有生成。正如其他人所说,它出现在错误日志中,所以检查一下。 - mikebabcock
如果res目录中有一些错误,则R.java不会重新生成。删除了错误 - >解决了我的问题:) - JavaRunner
@JavaRunner确切地说,我在寻找什么。到目前为止只有26票...... - bofredo


我发现这种情况发生在一个破碎的布局上,一切都爆炸了。放松一下,这就像你第一次学习编程C的那个老错误,你忘记了一个分号并产生了一百个错误。许多恐慌,按下所有按钮,让事情变得更糟。

  • 确保任何事情 R. 链接到没有打破。 修复XML文件中的所有错误。如果ADK中的任何内容被破坏, R 不会再生。
  • 如果你以某种方式击中某些东西并创造了 import android.R 在你的活动中, 去掉它
  • 项目 - >清洁。这将删除并重新生成R和BuildConfig。
  • 确保 项目 - >自动构建 被勾选了。如果没有,请通过手动构建 Menu -> Project -> Build Project 。
  • 等待 几秒钟的错误就消失了。
  • 如果它不起作用,删除/ gen /文件夹中的所有内容
  • 如果它仍然不起作用,请尝试 右键单击项目 - > Android工具 - >修复项目属性
  • 检查你的 的* .properties 文件(在您的应用程序文件夹的根文件夹中)并确保其中的链接没有损坏。
  • 右键单击您的 项目>属性> Android。查看页面右侧的Project Build Target和Library部分。您的Build Target应该与AndroidManifest.xml中的目标匹配。因此,如果在AndroidManifest中将其设置为17,请确保目标名称为Android 4.2。如果您的库在引用下有X,请删除并重新添加库,直到有绿色勾号。如果你移动了一些文件和文件夹,可能会发生这种情况。

如果R不再生,该怎么办

当您的XML文件损坏时,通常会发生这种情况。

  • 检查XML文件中的错误,主要是在 /res/ 夹
  • 常见的地方是 /layout/ 和 /values/,特别是如果你最近改变其中一个
  • 检查 AndroidManifest.xml。我发现经常更改字符串并忘记更改字符串名称 AndroidManifest.xml
  • 检查一下 Android SDK Build-tools 已安装。 窗口 - > Android SDK Manager - >工具 - > Android SDK Build-tools
  • 确保更新时 Android SDK Tools,你也更新了 Android SDK Platform-tools 和 Android ADK Build-tools。如果它们不匹配,则构建将无声地失败。
  • 如果找不到问题, 右键单击/ gen / - >从本地历史记录恢复... - >勾选R.java - >单击恢复。即使它没有解决问题,它也会清除额外的错误,使问题更容易找到。

300



这应该是最好的答案! - john.k.doe
实际上,它让我意识到我的环境仍然需要更新工具。 - woodleg.as
Window-> Android SDK Manager-> Tools-> Android SDK Build-tools这是我的解决方案,upvoted
删除 import android.R; 对我有用。 - abatishchev
我阅读了几十个答案,只有这一个提到了检查SDK Build-tools。我盲目地让eclipse下载并安装我所有的Android工具。它完全错过了那一部分。 - Justin Aquadro


我遇到过同样的问题。当我检查出来时,我发现布局下的XML资源名称没有正确的命名约定。它有一些大写字母。因此我将其重命名为使所有字母都小写并且魔术起作用。


40



tnx ...傻傻的我以为我可以在布局名称中使用大写字母 - Kevin
也为我工作:控制台报告了这个:[2010-09-22 16:19:40 - myproject] res \ drawable-ldpi \ downloadNow.png:文件名无效:必须只包含[a-z0-9_。] - sami
谢谢,这是我的问题。我在布局文件夹中有一个.xml文件,里面有一个大写,我的整个R.java文件都丢失/不会因为它而生成。了解这一点的唯一方法是认识到命名惯例不允许资本;没有生成错误。 - Lemmings19
在命名资源文件或属性时,请尝试将其命名为在Java中命名变量。 R.class将资源(即id,drawable,xml文件名)与公共静态最终常量放在一起,因此放“ - ”,“特殊字符”将导致停止生成R,因为这些符号可能具有其他算术手段。 - IronBlossom
是的,这对我来说是个问题。我的res / xml中的文件引用了一个不存在的布局文件,显然这会导致R.java无法生成,所以如果我运行Clean,则会导致缺少R.java,导致数百个导入错误... - Cerin


R.class突然丢失的一个原因是XML文件中存在错误。例如,当您添加名称为myCoolLayout.xml的大写字母的XML文件时,这是不允许的。或者当您的引用不指向现有文件等时。


28





在Eclipse中,只需使用Project - > clean来清理项目。该   R.java将自动(重新)创建。

如果由于某种原因,这不起作用:  确保 您的layout.xml文件不包含错误。 Eclipse似乎在这里有点错误:有时它不会标记XML中的错误,也不会标记包浏览器。在这种情况下:使用“clean”后查看“console”或“problems”视图。应该在那里显示所有错误。修复它们并重做干净。

注意:由于缺少R文件,无需修复您获得的错误! 只需修复XML文件和其他项目错误并使用干净!


17



确保资源文件命名约定正确。 @Masi感谢您在清理后查看“控制台”错误的提示。这帮助了我。 - Bharath Booshan
+1“检查控制台” - Artur


快速解决:

清单中的包名称必须与中的包名称相同 /src 文件夹, /gen 文件夹包将自动转载。

详细观察:

观察包中的名称 /gen 夹。在我的情况下,它不同于 /src 夹。

清单中引用的包是 /gen 夹。

我试图添加一个名为的包 /src 文件夹到 /gen 文件夹也看到会发生什么,但这并没有解决问题。然后我继续删除与程序包名称不同的程序包名称 /src 夹。这个包与名称不对应 /src 我删除它后立即重新创建文件夹。

由于清单中的包引用对应于无意义地重新创建并且与包中的包不对应的包。 /src 文件夹,这提示重命名 package = "oldPackage" 随着 package = "srcFolderPackage"


10





我有同样的问题,我终于找到了问题:在strings.xml中,我没有保留该行 <string name="app_name">program-name</string> 在创建新的Android项目时默认存在。我以为它只用于程序HelloWord,这是原始程序。

但是,AndroidManifest.xml引用此值,因此:

=>编译错误;
=> R.java没有更新;
=> ID无法识别...



9



string.xml中的行是“<string name =”app_name“>程序名称</ string>”。对不起,我的帖子有问题。 - Glaux


Android已在SDK构建工具ADT 22中添加了构建机制。您只需执行以下步骤即可。

  1. 更新Android SDK工具
  2. 更新Android SDK平台工具
  3. 更新Android SDK构建工具
  4. 将构建工具的路径添加到路径变量中。 (路径最多----你的目录-PATH \ android-sdk \ build-tools)

这将解决问题。


9



谢谢。我错过了Build Tool文件夹...... - hopia
欢迎@hopia .. - Mr.India
我的答案是与问题有关的唯一答案。仍然只有3票。奇怪! - Mr.India