我发现我的R.java永远不会更新,因此它不包含有关我的新资源的信息,所以我决定删除它并认为Eclipse会生成一个新资源。但这没有发生,我现在没有R.java。我怎样才能重新生成一个?
我正在使用Windows 7.
从其中一条评论中说:“做项目 - > 清理是导致我出现问题的原因。清理删除R.java ......无论出于何种原因插件没有重新生成文件。“
答案 0 :(得分:302)
我发现这种情况发生在我身上,布局破碎,一切都爆炸了。放松一下,这就像你第一次学习编程C时的那个老错误,你忘记了一个分号并产生了一百个错误。许多恐慌,按下所有按钮,使事情变得更糟。
R.
链接到的任何内容都没有损坏。 修复XML文件中的所有错误。如果ADK中的任何内容被破坏,R
将无法重新生成。import android.R
,将其删除。Menu -> Project -> Build Project
手动构建。当您的XML文件损坏时,通常会发生这种情况。
/res/
文件夹/layout/
和/values/
,特别是如果您最近更改了其中一个AndroidManifest.xml
。我发现经常更改字符串而忘记更改AndroidManifest.xml
。Android SDK Build-tools
。 窗口 - > Android SDK Manager - >工具 - > Android SDK构建工具 Android SDK Tools
时,您还要更新Android SDK Platform-tools
和Android ADK Build-tools
。如果它们不匹配,构建将无声地失败。答案 1 :(得分:175)
This site建议:
如果在项目上运行clean,它应该重新生成所有生成的Java文件,即R.
...和...
在Eclipse中,在“项目”菜单下,是一个自动构建的选项。 这将有助于您每次修改时都构建R.java文件 制作。 “清洁...”选项也在“项目”下。
This site提出了另一种解决方案。
答案 2 :(得分:40)
我有同样的问题。当我检查出来时,我发现布局下的XML资源名称没有正确的命名约定。它有一些大写字母。因此我将其重命名为使所有字母都小写,并且魔术起作用。
答案 3 :(得分:28)
R.class突然丢失的一个原因是XML文件中存在错误。例如,当您添加名称为myCoolLayout.xml的大写字母的XML文件时,这是不允许的。或者当您的引用不指向现有文件等时
答案 4 :(得分:17)
在Eclipse中,只需使用Project - >清理以清理项目。该 R.java将自动(重新)创建。
如果由于某种原因导致无效: 确保您的layout.xml文件不包含错误。 Eclipse似乎有点儿错误:有时它不标记XML中的错误,也不标记包浏览器。在这种情况下:使用“干净”后查看“控制台”或“问题”视图。应该在那里显示所有错误。修复它们并重做干净。
注意:由于缺少R文件,无需修复错误!只需修复XML文件和其他项目错误并使用干净!
答案 5 :(得分:10)
清单中的包名称必须与/src
文件夹中的包名称相同,/gen
文件夹包将自动复制。
观察/gen
文件夹中的包名称。在我的情况下,它与/src
文件夹中的那个不同。
清单中引用的包是/gen
文件夹的包。
我尝试将/src
文件夹名称的包添加到/gen
文件夹中,看看会发生什么,但这并没有解决问题。然后我继续删除与/src
文件夹的包名称不同的包名称。我删除时,会重新创建名称与/src
文件夹不对应的此包。
由于清单中的包引用对应于无意义地重新创建并且与/src
文件夹中的包不对应的引用,因此提示使用{{1}重命名package = "oldPackage"
}}
答案 6 :(得分:9)
我有同样的问题,我终于找到了问题:在strings.xml中,我没有保留创建新Android项目时默认存在的行<string name="app_name">program-name</string>
。我以为它只用于程序HelloWord,这是原始程序。
但是,AndroidManifest.xml引用了这个值,因此:
=&GT;编译错误;
=&GT; R.java没有更新;
=&GT; ID无法识别...
答案 7 :(得分:9)
Android已在SDK构建工具ADT 22中添加了构建机制。您只需执行以下步骤。
这将解决问题。
答案 8 :(得分:8)
如果没有生成R.java,其中一个解决方案是删除名为“blabla.out.xml”的布局文件。
删除此文件后,尝试从菜单 Project - &gt;清除项目。 清洁
答案 9 :(得分:7)
作为Glaux答案的概括,如果res
目录中有任何错误,那么即使您清理并重建,R.java也可能无法生成。首先解决这些错误。
例如:当您添加一个像“myimage-2.jpg”的图像文件时,系统会将此视为错误,因为文件名仅限于字母数字值。添加任何文件后,在“res”目录上刷新,并在控制台窗口中观察输出是否存在任何文件名警告。
答案 10 :(得分:6)
您100%在XML文件中有错误,但XML验证不会向您显示错误。这就是您需要首先检查XML文件的原因!
答案 11 :(得分:6)
如果您的操作系统是Ubuntu,我可以提供一些建议:
安装或升级ia32-lib:
sudo apt-get upgrade ia32-libs
检查您是否拥有aapt文件夹的正确权限:
cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
chmod 777 aapt
启动Eclipse:
sudo eclipse
运行项目 - &gt;在Eclipse中清理
答案 12 :(得分:5)
查看Eclipse中的 Problems 选项卡总是有帮助的。在我的情况下,我得到一个“ android无法解析目标'android-8'”错误消息,导致R.java无法生成。所以,我将导入的目标更正为我在 default.properties 文件中使用的那个,然后我通过Projects-&gt;清理并执行了清理! R.java是自动生成的!希望它有所帮助!
答案 13 :(得分:4)
res
文件夹中存在任何错误,则永远不会生成R.java。例如,在drawable子文件夹中有两个具有相同名称的文件,一个是icon.png,另一个是icon.html。
您可以在Eclipse控制台日志窗口中看到一些错误,其中显示“已定义资源条目图标。”。删除icon.html后,您可以清除或删除gen
文件夹。你会发现R.java已经创建了。
答案 14 :(得分:4)
确保您没有导入
<强> android.R; 强>
答案 15 :(得分:4)
我发现在res
文件夹中大写字母的任何文件都会产生此错误。这件事发生在我身上,我添加了一个PNG文件并忘了。
答案 16 :(得分:4)
清理项目,关闭Eclipse,重新打开它并启动我的项目最终使我的R.java重新出现......希望它有所帮助
答案 17 :(得分:3)
对我来说,我已经将v7 appcompat链接了两次。无论如何,在Eclipse中,右键单击Package Explorer或Navigator中的项目名称,转到Properties,Android,并取消选中Library部分中的任何重复项。您可能需要构建 - &gt;事后清理。
答案 18 :(得分:3)
在阅读了很多帖子和YouTube视频后,我发现由于各种原因,我们每个人都R.java
失踪了。
以下是我在Eclipse中修复此问题的方法:
gen
文件夹手动中创建R.java并保存。 将显示以下消息,您的文件将自动被重写:
手动修改R.java!恢复生成版本!
答案 19 :(得分:2)
显然没有最终答案,但这是另一个我在这里没有看到的答案:
我曾经(尝试)团队同步后R.java
消失,项目中有冲突解决文件(即thingy.xml.mine
,thingy.xml.r35
等)。删除它们/解决重新生成的冲突R
。
答案 20 :(得分:2)
我的问题是appcompat
与我的项目不在同一个目录中。
我在使用Ant编译应用时发现了这一点。
答案 21 :(得分:2)
我几次遇到过这个问题。我发现如果我没有通过我的应用程序名称导入包R,例如,如果我的应用程序具有包名称example.test,那么我发现我必须导入example.test.R才能访问任何一个资源。
如果没有导入,则返回的资源是默认资源,不包含我自己的资源。
如果你发现你只是得到一个默认资源列表,那么只需检查以确保你导入的是application_package_name.R而不是android.R。
答案 22 :(得分:2)
好的,很明显这个问题可能有很多原因。如果您使用的是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 not found
答案 23 :(得分:2)
我有这个问题。我意外删除了这个
xmlns:tools="http://schemas.android.com/tools"
它开始在我的XML文件和我的Java文件中导致整个项目的构建错误。一旦我重新输入我删除的内容,它就再次起作用了:)
答案 24 :(得分:1)
即使您认为一切正常,当看似没有任何工作正常时,请逐个检查您的XML文件。错误是100%。
如果您使用XML文件的GUI,一切似乎都没问题,但是当您输入文本XML文件时,您会看到内部的混乱。对于这些东西,Eclipse有点麻烦。
同样设置BuildAutomatically,因此在修复错误之后,您将在生成的文件中包含R.java文件....祝你好运!
答案 25 :(得分:1)
还要确保您拥有最新版本的ADT插件,并打开Android SDK管理器以将所有SDK工具更新到最新版本。检查Eclipse本身的更新。不匹配的版本对我来说是个问题。
答案 26 :(得分:1)
我的问题出在菜单文件中。
如果在菜单文件中引用了strings.xml
中不存在的字符串,编译器似乎不会发出警告。检查菜单XML文件中的item
是否引用了strings.xml
中不存在的任何字符串。通常在android:title
。
答案 27 :(得分:1)
这个问题刚刚提出来,不幸的是,这里没有任何建议对我有所帮助。在尝试了很多事情之后,我终于找到了发生的事情并希望它可以帮助别人。
昨天我使用Android SDK Manager下载了很多新东西。之后我更新了Android Eclipse插件。今天,在Eclipse“干净”之后,R文件消失并停止生成。
原因是,不知何故,可用SDK列表(在preferences-&gt; android下)为空。在将其再次指向正确的目录后,它重新加载并显示可用的SDK。当我关闭首选项并尝试其他构建时,一切都恢复正常。
在附件中,您可以看到已填充的SDK列表。虽然问题正在发生,但它是空的。
我希望这可以帮助别人!
答案 28 :(得分:1)
对我来说,当我尝试复制现有res/menu
而不是使用wizard
创建一个时,会导致此错误。
答案 29 :(得分:1)
如果您使用Maven,所有这些答案都无法解决。我的解决方案是添加
<genDirectory>${project.basedir}/gen</genDirectory>
到android-maven-plugin的配置部分。
答案 30 :(得分:1)
在我的情况下,没有生成R文件,因为我的res/
文件夹中有相同名称的XML文件(例如,res/layout/filename.xml
和res/values/filename.xml
)。
更改其中一个文件名后,我的R文件再次由 Build Automatically 选项生成。
答案 31 :(得分:1)
对我来说,问题是我的res文件夹中有一个带有大写字母的图像,即Image.png。只需把image.png。
全部为lowerCase,就是这样!
答案 32 :(得分:1)
我想强调粪_爷的答案。
我已经将一个颜色从“listcolor”重命名为“color_list”,但我没有发现其他一个布局正在引用它。所以(突然)我的所有R.string.X和R.layout.X都在'R'上失败了。
最后,我查看了Console窗口并查看了错误。我以为它们都是R没有找到的引用,但实际上,有一个是'找不到'listcolor'。一旦我解决了这个问题,其他错误就会消失。
也许Eclipse插件的未来版本将允许您重命名这些XML文件中的资源,并将其传播到它的所有引用。
答案 33 :(得分:1)
我更改了我的布局XML文件名,后来发现XML文件(在这种情况下是小部件提供程序)仍然引用了不存在的旧布局XML,这阻止了R类的自动生成/更正
答案 34 :(得分:1)
我遇到了同样的问题。事实证明我有一个循环引用;我更改了布局中引用的字符串名称。
我做了一个干净的重建,并且没有重新创建R.Java文件。我浪费了两个小时试图找出问题所在。我最终将布局项更改为一些临时文本,执行了一个干净的项目并创建了R.Java文件。
答案 35 :(得分:1)
我找到了一个解决方案,为什么R.class在再次制作后不是由Eclipse制作的 - 2清理,构建等等。
问题在于strings.xml:
<string name="hello">Hello World, HelloAutoComplete!</string>
<string name="app_name">HelloAutoComplete</string>
默认情况下,这些是在创建项目时由Eclipse创建的。
您肯定要根据自己的要求更改strings.xml。有时您从代码中清除string.xmls这两行:
它在AndroidManifest.xml文件中出现问题:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloAutoComplete" android:label="@string/app_name">
因此它无法与strings.xml通信。
答案 36 :(得分:0)
请勿从strings.xml
删除这两行:
android:icon="@drawable/icon" android:label="@string/app_name"
android:name=".HelloAutoComplete"
android:label="@string/app_name"
答案 37 :(得分:0)
在我的情况下,在无休止地关闭IDE,清理,尝试构建等之后,问题是我的“res”文件夹中的“无标题文件夹”,我可能错误地添加了它。
我希望Eclipse能够以Ant脚本的方式输出这些错误:
[null] invalid resource directory name: /Users/gubatron/workspace.android/my-project/res/untitled folder
答案 38 :(得分:0)
如果使用Lint错误检查程序,它将识别&#34; R&#34;的虚假导入。 一旦XML系统得到了错误的结束,一切都会丢失!!!
答案 39 :(得分:0)
首先,检查控制台输出 然后,检查您的xml布局文件名称是否仅为小写 纠正xml错误 检查项目属性 - &gt; Android用于不熟悉的东西
答案 40 :(得分:0)
主要是R.java文件与.xml文件和Java有关。我们知道XML标签,但是Java也是如此,因此我们需要一个唯一的ID来识别标签。
这里R.java文件主要与带有Java的XML文件相关,用于获取值。
答案 41 :(得分:0)
这对我有用,其他答案没有:
如果仍然存在,清洁再次出现!
完成。希望这会有所帮助。
答案 42 :(得分:0)
在之前的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文件。
我的解决方案是我的特定问题。
我希望它有助于某人...
答案 43 :(得分:0)
你可以尝试一件事。
转到C:\Program Files (x86)\Android\android-sdk\tools>
,运行adb kill-server
,然后adb start-server
。这对我有用,我不知道原因: - )。
答案 44 :(得分:0)
在我的情况下,我检查了所有以前的解决方案,但没有生成R.我只是从菜单文件夹中删除了我的main.xml文件并再次重新生成它。我不知道为什么,但它现在对我有用......
答案 45 :(得分:0)
我在AndroidManifest.xml文件中有一个错误,因此在修复该错误并点击
后,运行->清洁
它产生了R.java
答案 46 :(得分:0)
似乎所有答案都在不断重复,以检查XML中的错误并清理项目。做吧!但是,如果这不起作用怎么办?这对我有用:
如果您构建了一个生成错误R的项目而您将其删除,则它将不会重新生成,因此请删除此项目并创建新项目,确保不检查“自动构建”,然后您可以将文件夹复制到工作区,然后你清理项目或检查“自动构建”,这样它将正确生成你的。
答案 47 :(得分:0)
当我尝试从SDK源代码构建Support4Demos时,这个问题也发生在我身上。
在修复资源文件中的一些问题后(例如,“fill_parent”重命名为“match_parent”)我发现问题出现在清单文件中:我通过试验取消选中“定义&lt; application&gt; ;在AndroidManifest.xml中的标签“复选框,保存更改并且R.java神奇地重新出现。然后我重新检查了该框,保存了文件,并再次重新生成了R.java。
我想我遇到了Eclipse的缺点。
答案 48 :(得分:0)
还有另一种情况发生在我身上。我在strings.xml资源文件中添加了一个带有撇号的字符串,比如
<string name="Today">Returns Today’s date</string>
通过更改撇号来修复另一种类型的撇号,例如´
。
答案 49 :(得分:0)
如果你有一个与另一个文件同名的scale9 drawable,那么这也会导致这种情况:
只需删除其中一个文件即可修复它。
答案 50 :(得分:0)
如果您的AndroidManifest.xml
文件引用了strings.xml
中存储的字符串常量,并且您在strings.xml
中重命名了这些字符串,则需要在清单中更改它们一切都是犹太人。
对于引用您更改的常量的任何布局.xml文件,也是如此。不幸的是,Eclipse中的 Markers 视图和 Problems 视图都不会告诉您需要去哪里解决问题 - 只是他们找不到{{1 }}。如其他答案中所述,请查看控制台以查看修复常量引用所需的位置,然后再次清理项目。
答案 51 :(得分:0)
如果所有答案都失败,您可以从命令行运行资源生成: 进入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即可。 您应该获得错误所在的屏幕信息。
答案 52 :(得分:0)
通过更改文件project.properties解决问题:我添加了android-17的目标。
答案 53 :(得分:0)
请参阅博文 Android Developer Tip: Regenerating R.java 。
我没有继续发现在野外发现的所有可能的问题,我决定利用盯着代码的经过验证的方法。这样做了一段时间后,我在res
文件夹下发现了一些红人。他们是我目前的重新设计工作的遗留物,在出现问题之前我将要删除它。果然,只要我点击 Del ,就会自动重新出现这个糟糕的东西。
在单个句子中:从项目中删除所有不需要的文件,从清单文件中删除不需要的代码。
答案 54 :(得分:0)
没有错误但三个警告我在button
中使用了main.xml
文字属性的硬编码文字。
像这样:
<Button
android:id="@+id/scan"
.....
android:text="Scan" />
将text
属性更改为android:text="@string/scan_device"
后,会立即生成R.java。
因此,只要其中一个 XML 文件中出现任何错误/警告,它就会一直发生在我的机器/ Eclipse上。
IntelliJ IDEA 但警告没有此问题。
答案 55 :(得分:0)
如果其中任何一个有问题,Eclipse可能无法构建R类...... 解决问题,清洁&amp;重建..
答案 56 :(得分:0)
我在这里看不到它,但是我遇到了R.java
被删除而没有自动重建的问题。
当我处理switch语句和字符串时,这发生在我身上。 Eclipse建议我将项目合规性更改为1.7,这会立即将项目(R.java
)作为Android can't use this compliance打破。
<强>控制台:强>
[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,并提到了LinearLayout
暂时替换它们。当它被修复时,bam再次出现(如果“自动构建”打开)。然后,如果没有错误,我可以更改XML文件。
答案 57 :(得分:0)
我遇到了同样的问题。
检查 Lint警告后,我看到警告The resource R.string.app_name appears to be unused
...,因此我删除了R.string.app_name
。
AndroidManifest.xml
中需要此资源,尽管Lint警告我有关未使用的资源。我在清单中添加了“未使用的资源”,一切都恢复正常。
我希望这对某人有帮助。
答案 58 :(得分:0)
我忘了在declare-styleable标签
上设置name属性<declare-styleable>
<attr name="myView" format="reference"></attr>
</declare-styleable>
我用
修复了它<declare-styleable name="Theme">
<attr name="myView" format="reference"></attr>
</declare-styleable>
我没有任何错误
答案 59 :(得分:0)
我今天下午第一次遇到这个问题。即使我创建一个新项目,也不会生成R.java。我改变了工作场所,一切都恢复了。
答案 60 :(得分:0)
我的AndroidManifest.xml文件出现问题,并且没有生成R.java。
我认为解决方案是检查所有XML文件,无处不在!
答案 61 :(得分:0)
尝试检查project.properties
文件。可能是构建路径中的Android JAR文件与那里提到的版本不匹配。
当我改变目标时,它解决了我的问题。
答案 62 :(得分:0)
我有同样的问题。原因是我的一些资源在他们的文件名中有大写字母。我知道这听起来微不足道,但只是将它们改成所有小字母修复它并再次检索我的R.java文件。
希望有所帮助。
答案 63 :(得分:0)
几乎可以肯定的是,插入到genfile中的内容有问题。 Eclipse不够智能,无法显示问题所在,甚至表明存在问题!
考虑您对任何XML或图像内容所做的最后一次编辑 - 并尝试在必要时手动“回滚”您的更改。
我发现有时Eclipse出于某种原因不喜欢我的文件名,我必须更改它们。
因此,逐一添加资源,确保一切都“有效”。当某些东西中断时,只需尝试稍微更改它,直到Eclipse接受它为止。
你知道它在genfile出现时有效 - 如果没有问题,它会自动执行。