我发现我的 R.java 从未更新,因此它不包含有关我的新资源的信息,所以我决定删除它并认为 Eclipse 会生成一个新资源。但这并没有发生,我现在没有 R.java。我怎样才能再生一个?
我正在使用 Windows 7。
从其中一条评论中:“做项目- >清洁是造成我问题的原因。清洁会删除 R.java ......无论出于何种原因,插件都不会重新生成文件。”
我发现我的 R.java 从未更新,因此它不包含有关我的新资源的信息,所以我决定删除它并认为 Eclipse 会生成一个新资源。但这并没有发生,我现在没有 R.java。我怎样才能再生一个?
我正在使用 Windows 7。
从其中一条评论中:“做项目- >清洁是造成我问题的原因。清洁会删除 R.java ......无论出于何种原因,插件都不会重新生成文件。”
我发现这种情况发生在我身上,布局损坏,一切都爆炸了。放松,这就像你第一次学习编程 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 管理器 -> 工具 -> Android SDK 构建工具Android SDK Tools
,也更新Android SDK Platform-tools
and Android ADK Build-tools
。如果它们不匹配,则构建会静默失败。我遇到过同样的问题。当我检查它时,我发现布局下的 XML 资源的名称没有正确的命名约定。它有一些大写字母。所以我将它重命名为使所有字母都小写并且魔法起作用了。
R.class 突然丢失的原因之一是您的 XML 文件中存在错误。例如,当您添加名称中包含大写字母的 XML 文件时,例如 myCoolLayout.xml,这是不允许的。或者当您有不指向现有文件的引用时,等等。
在 Eclipse 中,只需使用 Project --> clean 来清理项目。R.java 将被自动(重新)创建。
如果由于某种原因不起作用: 确保您的 layout.xml 文件不包含错误。Eclipse 在这里似乎有点问题:有时它不会在 XML 和包资源管理器中标记错误。在这种情况下:使用“clean”后查看“console”或“problems”视图。所有错误都应显示在那里。修复它们并重做清洁。
注意:没有必要修复由于缺少 R 文件而导致的错误!只需修复 XML 文件和其他项目错误并使用 clean!
/src
manifest中的包名需要与文件夹中的包名相同,/gen
文件夹包会自动复制。
观察/gen
文件夹中包的名称。就我而言,它与/src
文件夹中的不同。
清单中引用的包是/gen
文件夹的包。
我试图将带有文件夹名称的包添加到/src
文件夹中,/gen
看看会发生什么,但这并没有解决问题。然后我继续删除与/src
文件夹的包名称不同的包名称。这个名称与文件夹不对应的包在/src
我删除后立即重新创建。
由于清单中的包引用对应于被无意义地重新创建的包,并且与文件夹中的包不对应/src
,因此提示package = "oldPackage"
使用package = "srcFolderPackage"
.
我有同样的问题,我终于找到了问题:在strings.xml中,我没有保留<string name="app_name">program-name</string>
创建新Android项目时默认存在的行。我以为它只用于程序HelloWord,这是原始程序。
然而,AndroidManifest.xml 引用了这个值,因此:
=> 编译错误;
=> R.java 没有更新;
=> ID 无法识别...
Android 在 SDK 构建工具 ADT 22 中添加了构建机制。您只需要执行以下步骤。
这将解决问题。
如果您的 R.java 没有生成,解决方案之一是删除名为“blabla.out.xml”的布局文件。
删除此文件后,尝试从菜单Project -> Clean 清理项目。
作为 Glaux 答案的概括,如果您在目录中有任何错误res
,那么 R.java 可能不会生成 - 即使您清理并重建。先解决这些错误。
举个例子:当你添加一个图像文件“myimage-2.jpg”时,系统会认为这是一个错误,因为文件名仅限于字母数字值。添加任何文件后刷新“res”目录,并在控制台窗口中观察输出是否有任何文件名警告。
如果您的操作系统是 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
运行项目 -> 在 Eclipse 中清理
您 100% 在 XML 文件中有错误,但 XML 验证不会向您显示错误。这就是为什么您需要首先检查您的 XML 文件的原因!
查看Eclipse中的问题选项卡总是有帮助的。就我而言,我收到“ android 无法解析目标'android-8' ”错误消息,导致 R.java 无法生成。因此,我将导入的目标更正为我在default.properties文件中使用的目标,然后我通过 Projects->Clean 执行了清理,瞧!R.java 是自动生成的!希望能帮助到你!
清理项目,关闭 Eclipse,重新打开它并启动我的项目终于让我的 R.java 重新出现......希望它有帮助
确保您没有导入
安卓.R;
res
如果文件夹中有任何错误,将永远不会生成 R.java 。例如,在drawable子文件夹中有两个同名的文件,一个是icon.png,另一个是icon.html。
您可以在 Eclipse 控制台日志窗口中看到一些错误,即“资源条目图标已定义。”。删除 icon.html 后,您可以清理或仅删除该gen
文件夹。您会发现创建了 R.java。
我发现文件夹中包含大写字母的任何文件都会产生此错误。我添加并忘记了一个PNG文件,这发生在我身上。res
在阅读了许多帖子和 YouTube 视频后,我发现我们每个人都R.java
因不同的原因失踪了。
这是我在 Eclipse 中解决此问题的方法:
gen
在文件夹中创建 R.java并保存。将显示以下消息,并且您的文件将自动被重写:
R.java 是手动修改的!恢复到生成的版本!
对我来说,我已经链接了两次 v7 appcompat。总之,在 Eclipse 中,右键单击 Package Explorer 或 Navigator 中的项目名称,转到 Properties,Android,然后取消选中 Library 部分中的任何重复项。之后您可能需要构建 --> 清理。
我遇到过这个问题几次。我发现如果我没有通过我的应用程序名称导入包 R,例如,如果我的应用程序具有包名称 example.test,那么我发现我必须导入 example.test.R 才能访问任何资源。
如果这没有被导入,那么返回的资源是默认资源,不包括我自己的资源。
话虽如此,如果你发现你只得到一个默认资源列表,那么只需检查以确保你正在导入 application_package_name.R 而不是 android.R。
显然没有一个最终答案,但这是我在这里还没有看到的另一个答案:
我R.java
在(尝试)团队同步后消失了,并且项目中有冲突解决文件(即thingy.xml.mine
,,thingy.xml.r35
等)。删除它们/解决重新生成的冲突R
。
我有这个问题。不小心把这个删了
xmlns:tools="http://schemas.android.com/tools"
这开始在我的 XML 文件以及我的 Java 文件中导致整个项目的构建错误。一旦我重新输入我删除的内容,它就会再次起作用:)
好的,很明显,这个问题可能有很多原因。如果您使用的是 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
我的问题是它appcompat
与我的项目不在同一个目录中。
我在使用Ant编译我的应用程序时发现了这一点。
我找到了一个解决方案,为什么 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 通信。
我更改了布局 XML 文件名,后来发现 XML 文件(在这种情况下为小部件提供程序)仍然引用不存在的旧布局 XML,这阻止了 R 类的自动生成/更正。
我想强调一下粪_爷的回答。
我已将颜色从“listcolor”重命名为“color_list”,但我没有发现其他布局之一正在引用它。所以(突然)我所有的 R.string.X 和 R.layout.X 在“R”上都失败了。
最后,我查看了控制台窗口并查看了错误。我以为它们都是对未找到 R 的引用,但实际上,其中之一是未找到“listcolor”。一旦我解决了这个问题,其他错误都消失了。
也许Eclipse插件的未来版本将允许您重命名这些 XML 文件中的资源并将其传播到它的所有引用。
对我来说,问题是我的 res 文件夹中有一个带有大写字母的图像,即 Image.png。只需放入 image.png。
全部小写,就是这样!
我有同样的问题。原来我有一个循环引用;我更改了布局中引用的字符串名称。
我进行了清理和重建,并且没有重新创建 R.Java 文件。我浪费了两个小时试图找出问题所在。我最终将布局项更改为一些临时文本,做了一个干净的项目并创建了 R.Java 文件。
在我的例子中,没有生成 R 文件,因为我的文件res/
夹中有同名的 XML 文件(例如,res/layout/filename.xml
和res/values/filename.xml
)。
在我更改了其中一个文件名后,我的 R 文件由Build Automatically选项再次生成。
即使您认为一切正常,但似乎没有任何工作正常,请一一检查您的 XML 文件。错误是100%。
如果您使用 XML 文件的 GUI,一切似乎都很好,但是当您输入文本 XML 文件时,您会看到里面一团糟。Eclipse 对于这些东西有点麻烦。
也设置 BuildAutomatically,因此在修复错误后,您将在生成的错误中包含 R.java 文件....祝您好运!!!
我也遇到了这个问题,不幸的是,这里的建议都没有帮助我。在尝试了很多事情之后,我终于知道发生了什么,并希望它可以帮助别人。
昨天我使用 Android SDK Manager 下载了很多新东西。之后我更新了 Android Eclipse 插件。今天,在 Eclipse “清理”之后,R 文件消失并停止生成。
原因是,不知何故,可用的 SDK 列表(在首选项-> android 下)是空的。再次将其指向正确的目录后,它重新加载并显示了可用的 SDK。当我关闭首选项并尝试另一个构建时,一切都恢复正常。
在随附的图片中,您可以看到已填写的 SDK 列表。当问题发生时,它是空的。
我希望这可以帮助别人!
还要确保您拥有最新版本的 ADT 插件,并打开 Android SDK 管理器以将所有 SDK 工具更新到最新版本。检查 Eclipse 本身的更新。不匹配的版本给我带来了问题。
我的问题在菜单文件中。strings.xml
如果菜单文件中引用了内部不存在的字符串,编译器似乎不会警告您。检查item
菜单 XML 文件中的 s 是否引用了strings.xml
. 通常在android:title
.
对我来说,当我尝试复制现有res/menu
文件而不是使用wizard
.
如果您使用 Maven,所有这些答案都不起作用。我的解决方案是添加
<genDirectory>${project.basedir}/gen</genDirectory>
到 android-maven-plugin 的配置部分。
不要从以下内容中删除这两行strings.xml
:
android:icon="@drawable/icon" android:label="@string/app_name"
android:name=".HelloAutoComplete"
android:label="@string/app_name"
就我而言,在无休止地关闭 IDE、清理、尝试构建等之后,问题是我的“res”文件夹中的一个“无标题文件夹”,我可能错误地添加了该文件夹。
我希望 Eclipse 会像Ant脚本那样输出这些错误:
[null] invalid resource directory name: /Users/gubatron/workspace.android/my-project/res/untitled folder
主要是 R.java 文件与 .xml 文件和 Java 有关。我们知道 XML 标签,但是 Java 呢,所以我们需要一个唯一的 id 来识别标签。
这里的 R.java 文件主要是用 Java 获取值的 XML 文件。
当我尝试从 SDK 源代码构建 Support4Demos 时,我也遇到了这个问题。
在修复了资源文件中的一些问题(例如,“fill_parent”重命名为“match_parent”)后,我发现问题出在清单文件中:我通过反复试验未选中“在AndroidManifest.xml”复选框,保存更改,R.java 神奇地重新出现。然后我重新选中该框,保存文件,然后再次重新生成 R.java。
我想我遇到了 Eclipse 的一个缺点。
如果您的AndroidManifest.xml
文件引用了您存储在 中的字符串常量strings.xml
,并且您在 中重命名了这些字符串strings.xml
,则需要在清单中更改它们以使所有内容都符合构建要求。
对于引用您更改的那些常量的任何布局 .xml 文件也是如此。不幸的是,Eclipse 中的Markers视图和Problems视图都不会告诉您需要去哪里解决问题——只是他们找不到R.java
. 如其他答案所述,查看控制台以查看需要修复常量引用的位置,然后再次清理项目。
如果其中任何一个有问题,Eclipse 可能无法构建 R 类......修复问题,清理并重建......
今天下午第一次遇到这个问题。即使我创建了一个新项目,也不会生成 R.java。我换了工作场所,一切都恢复了。
我遇到过同样的问题。原来原因是我的一些资源的文件名中有大写字母。我知道这听起来微不足道,但只需将它们更改为所有小写字母即可修复它并再次检索我的 R.java 文件。
希望有帮助。
几乎可以肯定,插入到 genfile 中的内容有问题。Eclipse 不够聪明,无法显示问题所在,甚至表明存在问题!
想想您对任何 XML 或图像内容所做的最后一次编辑 - 并尝试“回滚”您的更改,如有必要,手动进行。
我发现有时 Eclipse 出于某种原因不喜欢我的文件名,我必须更改它们。
因此,一项一项地添加到资源中,以确保这一切都“有效”。当出现问题时,只需尝试稍微更改它,直到 Eclipse 接受它。
当 genfile 出现时,您知道它正在工作 - 如果没有问题,它会自动这样做。
你可以再尝试一件事。
去C:\Program Files (x86)\Android\android-sdk\tools>
,运行adb kill-server
,然后adb start-server
。这对我有用,我不知道原因:-)。
尝试检查project.properties
文件。可能是您的构建路径中的 Android JAR 文件与那里提到的版本不匹配。
它解决了我的问题,因为我改变了我的目标。
我的 AndroidManifest.xml 文件有问题,并且没有生成 R.java。
我认为解决方案是检查所有的 XML 文件,无处不在!
我忘记在可声明样式的标签上设置名称属性
<declare-styleable>
<attr name="myView" format="reference"></attr>
</declare-styleable>
我用
<declare-styleable name="Theme">
<attr name="myView" format="reference"></attr>
</declare-styleable>
我没有任何错误
我有同样的问题。
检查Lint 警告后,我看到了警告The resource R.string.app_name appears to be unused
...,所以我删除了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,将它们暂时替换为LinearLayout
. 修复后,bam,它会重新出现(如果“自动构建”已打开)。如果没有任何问题,我可以将 XML 文件改回来。
没有错误,只有三个警告,我button
在main.xml
. 像这样的东西:
<Button
android:id="@+id/scan"
.....
android:text="Scan" />
将text
属性更改android:text="@string/scan_device"
为 R.java 后立即生成。
因此,每当其中一个XML文件出现任何错误/警告时,它总是发生在我的机器/Eclipse 上。
IntelliJ IDEA没有这个警告问题。
请参阅博文 Android 开发人员提示:重新生成 R.java。
我没有继续发现在野外发现的所有可能的问题菌株,而是决定利用久经考验的方法来盯着代码。res
这样做了一段时间后,我在文件夹下发现了几个红人。它们是我当前重新设计工作的剩余部分,我将在事情出错之前将其删除。果然,我一碰到Del他们,该死的 R 东西就自动重新出现了。
一句话:从项目中删除所有不需要的文件,从清单文件中删除不需要的代码。
通过更改文件project.properties解决问题:我添加了一个android-17的目标。
如果所有答案都失败,您可以从命令行运行资源生成: 进入您的 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 更改为适当的值即可。您应该获得错误所在的屏幕信息。
如果您有一个与另一个文件同名的 scale9 可绘制对象,也会导致这种情况:
只需删除其中一个文件即可修复它。
还有一种情况发生在我身上。那是当我在我的 strings.xml 资源文件中添加一个带撇号的字符串时,比如
<string name="Today">Returns Today’s date</string>
通过将撇号更改为另一种类型的撇号(例如´
.
似乎这里的所有答案都在不断重复以检查 XML 中的错误并清理您的项目。去做吧!但如果这不起作用怎么办?这对我有用:
如果您构建一个生成错误 R 的项目并将其删除,它将不会重新生成,因此请删除此项目并创建新项目,确保您不选中“自动构建”,然后您可以将文件夹复制到工作区,然后您清理项目或检查“自动构建”,以便正确生成您的 R。
在我的情况下,我检查了所有以前的解决方案,但没有生成 R。我只是从菜单文件夹中删除了我的 main.xml 文件并再次重新生成它。我不知道为什么,但它现在对我有用......
在之前的 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 文件。
这是我对特定问题的解决方案。
我希望它可以帮助某人...
这对我有用,其他答案没有:
如果仍然存在,请再次清洁!
完毕。希望这可以帮助。
如果您使用 Lint 错误检查器,它将识别“R”的虚假导入。一旦 XML 系统抓住了错误的一端,一切都将丢失!!!
首先,检查控制台输出。
然后,检查您的 xml 布局文件名称是否仅为小写。
更正 xml 错误。
检查项目属性 - > Android 是否有不熟悉的东西
我在 AndroidManifest.xml 文件中有一个错误,所以在修复该错误并点击之后
运行->清理
它产生了我 R.java