我发现我的R.java从来没有更新过,所以它不包含关于新资源的信息,所以我决定删除它,并认为Eclipse会生成一个新的资源。但这并没有发生,我现在没有R.java。我怎么能再生一个?

我用的是Windows 7。

其中一条评论是:“做项目->清洁是我遇到问题的原因。删除R.java…不管出于什么原因,插件没有重新生成文件。”


本网站建议:

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

…和…

在Eclipse的Project菜单下,有一个自动构建的选项。 这将帮助您在每次修改时构建R.java文件 制造的。清洁……项目下也有选项。

这个网站提出了另一种解决方案。


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


我也有同样的问题,我最终发现了问题:在strings.xml中,我没有保留一行<string name="app_name">程序名</string>,这是在创建一个新的Android项目时默认存在的。我以为它只用于程序HelloWord,这是原来的程序。

然而,AndroidManifest.xml引用这个值,因此:

编译错误; =>没有更新R.java; => ID不被识别…


如果您的R.java没有生成,解决方案之一是删除名为“blabla.out.xml”的布局文件。

删除此文件后,尝试从project -> Clean菜单中清理项目。


我发现了一个解决方案,为什么R.class不被Eclipse重新创建后- 2清洁,构建等。

问题在strings.xml中:

<string name="hello">Hello World, HelloAutoComplete!</string>

<string name="app_name">HelloAutoComplete</string>

这些是Eclipse在创建项目时默认创建的。

当然,您需要根据自己的需求更改strings.xml。有时你会清除字符串。xml这两行代码:

它在AndroidManifest.xml文件中产生了一个问题:

<application android:icon="@drawable/icon"  android:label="@string/app_name">
<activity android:name=".HelloAutoComplete" android:label="@string/app_name">

所以它不能与strings。xml通信。


不要从strings.xml中删除这两行:

android:icon="@drawable/icon" android:label="@string/app_name"

android:name=".HelloAutoComplete"

android:label="@string/app_name"

我也有同样的问题。当我检查它时,我发现布局下的XML资源的名称没有正确的命名约定。上面有一些大写字母。所以我重新命名,使所有字母小写,神奇的工作。


以我为例,在无休止地关闭IDE、清理、尝试构建等之后,问题是我的“res”文件夹中的一个“未命名文件夹”,我可能错误地添加了这个文件夹。

我希望Eclipse能输出这类错误,就像Ant脚本那样:

[null] invalid resource directory name: /Users/gubatron/workspace.android/my-project/res/untitled folder

我改变了我的布局XML文件名,后来发现XML文件(小部件提供程序在这种情况下)仍然引用旧的布局XML不存在,这阻止了R类的自动生成/纠正。


快速修复:

清单中的包名称需要与/src文件夹中的包名称相同,/gen文件夹中的包将自动复制。

详细的观察:

观察/gen文件夹中的包的名称。在我的例子中,它与/src文件夹中的不同。

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

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

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


主要是R.java文件与.xml文件和Java。我们知道XML标记,但是Java呢?因此,我们需要有一个唯一的id来标识标记。

这里的R.java文件主要与使用Java获取值的XML文件相关。


作为Glaux的答案的概括,如果在res目录中有任何错误,那么R.java可能不会生成-即使您清理并重新构建。首先解决这些错误。

举个例子:当你添加一个图像文件,比如说“myimage-2.jpg”,系统会认为这是一个错误,因为文件名被限制为字母数字值。在添加任何文件后对“res”目录进行刷新,并观察控制台窗口中的输出是否有文件名警告。


我遇到过几次这样的问题。我发现,如果我没有通过应用程序的名称导入包R,例如,如果我的应用程序有包名称示例。然后我发现我必须导入example.test.R才能访问任何资源。

如果没有导入,那么返回的资源是默认资源,不包括我自己的资源。

也就是说,如果你发现你只是得到一个默认资源的列表,然后检查,以确保你导入application_package_name。R而不是android。


清理项目,关闭Eclipse,重新打开并启动我的项目,最终使我的R.java重新出现…希望能有所帮助


我想强调糞_爺的答案。

我重命名了一个颜色从“listcolor”到“color_list”,但我没有抓住其他布局之一是引用它。所以(突然)我所有的R.string. x和R.layout. x在'R'上都失败了。

最后,我查看了控制台窗口并查看了错误。我认为它们都是R没有被发现的引用,但实际上,其中一个是'listcolor'没有被发现。一旦我修复了这个,其他错误就都消失了。

也许Eclipse插件的未来版本将允许您重命名这些XML文件中的资源,并将其传播到对它的所有引用中。


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

如果由于某种原因,这不起作用:确保你的layout.xml文件不包含错误。Eclipse在这里似乎有点bug:有时它不会在XML或包资源管理器中标记错误。在这种情况下:在使用“clean”后查看“console”或“problems”视图。所有错误都应该显示在那里。修好它们,重新清理。

注意:没有必要修复因为缺少R文件而导致的错误!只需修复XML文件和其他项目错误,并使用清洁!


当我试图从SDK源代码构建Support4Demos时,这个问题也发生在我身上。

在修复了资源文件中的一些问题(例如,“fill_parent”重命名为“match_parent”)后,我发现问题在清单文件中:我通过试错检查了“在AndroidManifest.xml中定义一个<应用>标签”复选框,保存了更改,R.java神奇地重新出现。然后,我重新选中了该框,保存了该文件,重新生成了R.java。

我想我遇到了Eclipse的一个缺点。


对于这个问题,显然没有一个最终答案,但这里有另一个我还没有看到的答案:

我曾经让R.java在(尝试)团队同步后消失,并且在项目中存在冲突解决文件(即thing .xml.mine,thing .xml)。r35,等等)。删除它们/解决冲突再生R。


如果你的AndroidManifest.xml文件引用了你存储在Strings .xml中的字符串常量,并且你在Strings .xml中重命名了这些字符串,你将需要在清单中更改它们,以使构建的一切都符合要求。

同样的情况也适用于任何引用您所更改的常量的布局.xml文件。不幸的是,Eclipse中的Markers视图和Problems视图都不会告诉您需要到哪里去修复这些问题——只是它们无法找到R.java。正如在其他答案中提到的,查看控制台,看看需要在哪里修复常量引用,然后再次清理项目。


对我来说,问题在于我的res文件夹中有一张大写字母的图像,即image .png。放image。png。

全部小写,就是这样!


查看Eclipse中的Problems选项卡总是很有帮助的。在我的情况下,我得到了一个“android无法解决目标‘android-8’”的错误消息,使R.java无法生成。因此,我将导入的目标纠正为我在默认情况下使用的目标。属性文件,然后我执行了一个清洁通过项目->清洁,瞧!自动生成R.java !希望能有所帮助!


确保您的XML文件没有任何问题 确保你的舱单上没有错误 确保你的琴弦没有问题

如果其中任何一个有问题,Eclipse可能无法构建R类…… 解决问题,清理和重建。


今天下午我第一次遇到这个问题。即使当我创建一个新项目时,也不会生成R.java。我改变了工作场所,一切都恢复正常了。


我也有同样的问题。原来我有一个循环参考;我更改了在布局中引用的字符串名称。

我做了一个清洁和重建和R.Java文件没有被重新创建。我浪费了两个小时想弄清楚是怎么回事。我最终将布局项更改为一些临时文本,做了一个干净的项目,并创建了R.Java文件。


我也有同样的问题。结果发现,原因是我的一些资源的文件名中有大写字母。我知道这听起来很琐碎,但只是把它们都改成小字母,修复了它,重新检索了我的R.java文件。

希望这能有所帮助。


几乎可以肯定插入到genfile中的内容有问题。Eclipse不够聪明,无法显示问题是什么,甚至无法指出存在问题!

考虑一下您对任何XML或图像内容所做的最后一次编辑-并尝试“回滚”您的更改,如果需要可以手动进行。

我发现Eclipse有时出于某种原因不喜欢我的文件名,我必须更改它们。

所以,一个接一个地增加资源,确保一切都“有效”。当出现问题时,只需尝试对其进行一些更改,直到Eclipse接受它。

当genfile出现时,你知道它正在工作-如果没有问题,它会自动这样做。


在我的例子中,R文件没有生成,因为我的res/文件夹中有同名的XML文件(例如,res/layout/filename.xml和res/values/filename.xml)。

在我更改了其中一个文件名后,我的R文件再次通过Build automatic选项生成。


你可以再试一件事。

进入C:\Program Files (x86)\Android\ android-sdk\tools>,运行adb kill-server,然后运行adb start-server。这对我有用,我不知道原因:-)。


确保你没有导入

android.R;


如果res文件夹中有任何错误,R.java将永远不会生成。例如,在可绘制的子文件夹中有两个文件具有相同的名称,一个是icon.png,另一个是icon.html。

您可以在Eclipse控制台日志窗口中看到一些错误,显示“资源条目图标已经定义”。删除icon.html后,您可以清除或删除gen文件夹。您将发现创建了R.java。


在阅读了许多帖子和YouTube视频后,我发现我们每个人都因为不同的原因丢失了R.java。

下面是我在Eclipse中修复这个问题的方法:

在gen文件夹中手动创建R.java并保存。 然后进入项目,点击“清洁”

将显示以下消息,您的文件将被自动重写:

手动修改了R.java !恢复到生成版本!


我有这个问题。我不小心把这个删了

xmlns:tools="http://schemas.android.com/tools"

在我的XML文件和Java文件中,这开始导致整个项目的构建错误。当我重新输入我删除的内容时,它又工作了:)


当您认为一切正常,但似乎没有任何事情可以正常工作时,请逐个检查XML文件。错误就在那里。

如果您使用XML文件的GUI,一切似乎都没问题,但当您输入文本XML文件时,您会看到里面的混乱。Eclipse在这方面有点bug。

也要设置BuildAutomatically,这样在你修复了错误之后,你的R.java文件就会在生成的....中祝你好运! !


我也遇到了这个问题,不幸的是,这里的建议对我没有任何帮助。在尝试了很多事情之后,我终于发现了发生了什么,希望它能帮助到其他人。

昨天我用Android SDK管理器下载了很多新东西。之后,我更新了Android Eclipse插件。今天,在Eclipse“清理”之后,R文件消失并停止生成。

原因是,不知为何,可用sdk的列表(在首选项-> android下)是空的。在再次将其指向正确的目录后,它将重新加载并显示可用的sdk。当我关闭首选项并尝试另一个构建时,一切都恢复正常。

在附件的图片中,你可以看到已经填满的sdk列表。当问题发生时,它是空的。

希望这能对别人有所帮助!


试着检查项目。属性文件。这可能是你的Android JAR文件在构建路径不匹配的情况下,在那里提到的版本。

它解决了我的问题,因为我改变了我的目标。


我发现在res文件夹中任何有大写字母的文件都会产生这个错误。这种情况发生在我添加的一个PNG文件上,我忘记了。


我的AndroidManifest.xml文件有一个问题,没有生成R.java。

我认为解决方案是检查所有的XML文件,到处都是!


很明显,这个问题有很多原因。如果你在64位的linux机器上,你第一次设置ADT,你可能会遇到这个问题,R不能自动生成。检查控制台选项卡,你可能会看到类似的错误:

 'No such file or directory' while attempting to get adb version from '/home/patrick/code/android-sdks/platform-tools/adb'

如果是这种情况,你需要安装ia32-libs,使用如下代码:

 sudo apt-get install ia32-libs

详见:Android adb未找到


我忘记在可声明样式的标记上设置name属性

<declare-styleable>
        <attr name="myView" format="reference"></attr>
</declare-styleable>

我用

<declare-styleable name="Theme">
        <attr name="myView" format="reference"></attr>
</declare-styleable>

我没有得到任何错误


我也有同样的问题。

检查Lint警告后,我看到警告资源R.string。App_name似乎未使用…,所以我删除了r.r string.app_name。

这个资源在AndroidManifest.xml中是必需的,尽管Lint警告我一个未使用的资源。我在清单中添加了“未使用的资源”,一切恢复正常。

我希望这能对某些人有所帮助。


我没有看到它列在这里,但我遇到了我的R.java被删除的问题,不能自动重建。

我在处理switch语句和字符串时遇到了这种情况。Eclipse建议我将项目的遵从性更改为1.7,这立即破坏了项目(R.java),因为Android不能使用这种遵从性。

控制台:

[2013-03-12 17:26:33 - CrimeAtlas] Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.

我通过使用“修复项目属性”修复了这个错误,然后像建议的那样查看日志。我注释掉了文件中的XML,提到用线性布局临时替换它们。当它被修复,砰,它重新出现(如果“自动构建”是打开的)。然后,如果没有任何错误,我可以将XML文件更改回来。


我发现这发生在我与一个破碎的布局和一切爆炸。放松,这就像你第一次学习编程时犯的错误一样,你忘记了一个分号,它就会产生100个错误。许多人惊慌失措,按下所有的按钮,使事情变得更糟。

解决方案

Make sure that anything the R. links to is not broken. Fix all errors in your XML files. If anything in the ADKs are broken, R will not regenerate. If you somehow hit something and created import android.R in your activity, remove it. Run Project -> Clean. This will delete and regenerate R and BuildConfig. Make sure Project -> Build Automatically is ticked. If not, build it manually via Menu -> Project -> Build Project . Wait a few seconds for the errors to disappear. If it doesn't work, delete everything inside the /gen/ folder If it still doesn't work, try right-clicking your project -> Android Tools -> Fix Project Properties. Check your *.properties files (in the root folder of your app folder) and make sure that the links in there are not broken. Right-click your project > properties > Android. Look at the Project Build Target and Library sections on the right side of the page. Your Build Target should match the target in your AndroidManifest.xml. So if it's set to target 17 in AndroidManifest, make sure that the Target Name is Android 4.2. If your Library has an X under the reference, remove and re-add the library until there's a green tick. This might happen if you've moved a few files and folders around.

如果R不能再生怎么办

这通常发生在XML文件损坏时。

Check errors inside your XML files, mainly within the /res/ folder Common places are /layout/ and /values/, especially if you've changed one of them recently Check AndroidManifest.xml. I find that often I change a string and forget to change the string name from AndroidManifest.xml. Check that Android SDK Build-tools is installed. Window -> Android SDK Manager -> Tools -> Android SDK Build-tools Make sure when you update the Android SDK Tools, you also update the Android SDK Platform-tools and Android ADK Build-tools. Build fails silently if they don't match. If you can't find the issue, right click /gen/ -> Restore from local history... -> tick R.java -> click Restore. Even if it doesn't solve the problem, it will clear out the extra errors to make the problem easier to find.


在main.xml中使用硬编码文本作为按钮文本属性时,没有出现任何错误,只有三个警告。 就像这样:

<Button
    android:id="@+id/scan"
    .....
    android:text="Scan" />

在将文本属性更改为android:text="@string/scan_device"后,立即生成了R.java。

因此,只要某个XML文件中出现任何错误/警告,它就会在我的机器/Eclipse上发生。

不过IntelliJ IDEA在警告方面没有这个问题。


Android开发者提示:再生R.java。

我没有继续发现在野外发现的所有可以想象的问题,而是决定利用经过验证的方法盯着代码。这样做了一段时间后,我在res文件夹下发现了几个红色的家伙。它们是我当前重新设计工作的剩余部分,我打算在事情出错之前删除它们。果然,当我在它们上点击Del时,该死的R东西自动神奇地重新出现。

一句话:从项目中删除所有不需要的文件,从清单文件中删除不需要的代码。


通过更改文件项目来解决问题。属性:我添加了一个android-17目标。


还要确保您拥有最新版本的ADT插件,并打开Android SDK管理器将所有SDK工具更新到最新版本。还要检查Eclipse本身中的更新。不匹配的版本给我带来了问题。


如果全部回答不通过,可以从命令行执行资源生成: 进入Eclipse项目目录。 然后运行

aapt.exe package -f -v -m -S res -J src -M AndroidManifest.xml -I ANDROID_HOME/platforms/android-XXX/android.jar

只需用适当的值更改ANDROIRD_HOME和XXX。 您应该在屏幕上获得错误所在的信息。


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

更新Android SDK工具 更新Android SDK平台工具 更新Android SDK构建工具 将构建工具的路径添加到path变量中。(路径到---- YOUR DIRECTORY-PATH\android-sdk\build-tools)

这将解决问题。


同样会导致这种情况的是,如果你有一个scale9可绘制文件与另一个文件具有相同的名称:

img_file.9.png img_file.png

只需删除其中一个文件就可以修复它。


还有另一种情况发生在我身上。当我在strings.xml资源文件中添加一个带有撇号的字符串时,就像

<string name="Today">Returns Today’s date</string>

它是通过将撇号改为另一种类型的撇号来修复的,比如´。


如果你的操作系统是Ubuntu,我可以提供一些建议:

安装或升级ia32-lib: Sudo apt-get升级ia32-libs 检查您是否对aapt文件夹有正确的权限: cd ANDROID / adt - bundle - linux - x86_64 - 20130522 / sdk /构建工具/ android-4.2.2 Chmod 777 apapt 启动Eclipse: sudo eclipse 在Eclipse中运行Project -> Clean


似乎这里的所有答案都在重复检查XML中的错误并清理您的项目。做到!但如果这行不通呢?以下是对我有效的方法:

如果你创建的项目生成了一个错误的R,你删除了它,它不会重新生成,所以删除这个项目并创建一个新的项目,确保你没有勾选“自动生成”,然后你可以将你的文件夹复制到工作区,然后清理项目或勾选“自动生成”,这样它就会正确地生成你的R。


在我的情况下,我检查了所有以前的解决方案,但没有生成r。我只是从菜单文件夹中删除了我的main.xml文件,并重新生成它。我不知道为什么,但它现在对我有用……


我的问题是appcompat与我的项目不在同一个目录中。

我在用Ant编译我的应用程序时发现了这一点。


这是我发现的又一个答案,之前的30个答案都没用。

我在strings.xml文件中发现了我的问题,尽管它非常非常奇怪。 我把我的应用精简到最低限度,这是唯一发现的东西。我甚至可以把它复制到一个全新的空白应用程序上。

在strings.xml文件中,它编译(并生成R.java文件):

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Test_My_App</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>

然而,这不是:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello_world">Hello world</string>
<string name="app_name">My_App</string>
<string name="action_refresh">Refresh</string>
</resources>

有趣的是,几天前我删除了action_settings。从那以后,我已经清理了我的代码,再也没有出现过任何问题。今天,我在strings.xml文件中添加了额外的字符串,在清理代码后,车轮脱落了。 此外,如果我重新排列相同的3个字符串行,并清理代码,则不会重新生成R.java文件。

这是我解决问题的方法。

我希望它能帮助到一些人……


以下是对我有效而其他答案无效的答案:

创建新的Android应用程序项目, 从旧目录复制所有文件和文件夹(除了/gen)并替换! 在包资源管理器中刷新项目根目录。 如果还在,再清理一下! 完成了。希望这能有所帮助。


我的问题在一个菜单文件里。 如果在菜单文件中引用了strings.xml中不存在的字符串,编译器似乎不会警告你。检查菜单XML文件中的项目是否引用了在strings. XML中不存在的字符串。通常在android:title。


对我来说,我已经链接了v7 appcompat两次。无论如何,在Eclipse中,右键单击包资源管理器或导航器中的项目名称,转到属性,Android,并取消选中库部分中的任何重复项。你可能需要构建->清洁之后。


如果你使用Lint错误检查器,它将识别虚假的“R”导入。 一旦XML系统抓住了错误的一端,一切都完了!!


对我来说,这个错误是由于我试图复制一个现有的res/菜单,而不是用向导创建一个。


如果使用Maven,所有这些答案都不能工作。我的解决方案是

<genDirectory>${project.basedir}/gen</genDirectory>

到android-maven-plugin的配置部分。


在XML文件中有一个错误,但是XML验证没有显示错误。这就是为什么需要首先检查XML文件的原因!


首先,检查Console输出。 然后,检查xml布局文件名称是否只使用小写。 纠正xml错误。 检查项目属性-> Android不熟悉的东西


我在AndroidManifest.xml文件中有一个错误,所以在修复这个错误后,点击

运行- >清洁

它产生了R.java