题 R无法解析 - Android错误


我刚下载并安装了新的Android SDK。我想创建一个简单的应用程序来测试它。

该向导创建了此代码:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

 给了我错误

R无法解决

在线

setContentView(R.layout.main);

为什么?

PS:我有一个名为的XML文件 main.xml 下 res/layout/


989


起源


对于那些仍然遇到eclipse无法更新/生成R.java的问题的人。一种可能的解决方案是创建一个虚拟xml并删除该xml。在我的情况下,这是解决方案 - denil
老实说,这听起来很愚蠢(而且确实如此),但修改AndroidManifest.xml,然后撤消该编辑,然后保存文件为我工作。如果我在那之后清理了项目,它又破了。而且这一次我认为Xcode是唯一一个有这些神秘错误的IDE。 - iwasrobbed
您是否尝试右键单击项目 - > Android工具 - >修复项目设置? - Sergei
请检查您的XMl布局文件,如果xml中的任何错误您无法生成R.java,并且错误也会在bulid和clean之后出现。 - swiftBoy
只是一个提示:当我将IDE从Eclipse切换到Android Studio时,这种情况不再发生在我身上。 - mata


答案:


在追踪这个问题之后,我在Android文档中找到了这个注释:

http://source.android.com/source/using-eclipse.html

*注意:Eclipse有时会喜欢在其中添加“import android.R”语句   使用资源的文件顶部,   特别是当你问Eclipse时   排序或管理进口。这个   会引起你的 使 打破。看   出于这些错误的导入   声明并删除它们。*

在浏览Android示例教程时,我会经常使用 按Ctrl + 转移 + Ø 命令“组织导入”并生成任何缺少的导入语句。有时这会产生不正确的import语句,这会隐藏 R.java 在构建时自动生成的类。


818



这种情况也会发生,但是一个Bunged up布局文件也可能导致它。 - GHz
这个经典的bug已经在Eclipse中持续了YEARS,并且从未得到修复。 1000多人面临同样的问题。 - Carol
Eclipse开发人员,请删除这个$£%&“$&/ bug!Google开发者,请给我一个类似于Xcode for iPhone的£&$”%&Android套件! - Abramodj
@ 2-Stroker:这是一个bug。当我通过日食WIZARD创建一个分支新的andorid项目并且抱怨“R无法解决”时,它发生在我身上。我不得不注释掉setContentView和getMenuInflater行,然后eclipse生成了R.java,之后我可以取消注释setContentView和getMenuInflator。 Abramodj是对的,即使你的'hello world'例子没有编译,环境也会有严重的问题。修复谷歌! - CF_Maintainer
谷歌如何不授予eclipse.org资金以获得这样的项目? - Cris


每次我遇到R的问题都没有生成,甚至消失,这是由于XML布局文件中的一些问题阻止了应用程序的构建。


377



+1为此。我有一个较旧的styles.xml文件,其中parent =“android:WindowTitleBackground”,它正在破坏我的构建并阻止生成任何“gen”。除了在我第一次打开项目时的控制台窗口中,实际上没有报告错误。 - Scott Persinger
确切地说,如果你从另一个项目中复制布局,并且正在获得这个,那就找出缺少的drawable - 这将立即修复它! - Gabor
我瘦了我有同样的问题,有没有办法知道女巫的布局之一? - Sergey Kucher
是的,我错过了一个可绘制文件,这阻止了R文件生成。奇怪的是我有一个 android:icon="@drawable/XXX" 宣言 <item> 在菜单资源中,但没有红色波形信号表示未找到可绘制资源XXX。在其他情况下, "@drawable/YYY"  是 在找不到YYY时标记,但在这种情况下不标记。因为某些原因。 - taylor
是的,优秀解决。当一个人得到这个错误..很多时候所有的布局文件都被标记为有错误。这是因为他们都在寻找R.然而,其中一个可能有一个无关的错误中止了构建。在我的情况下,缺少drawable。 - Todd Painton


每当你得到

R无法解决

然后检查一下 /res 目录,必须有一些文件中有一些错误,这阻止了应用程序的构建。例如,它可能是布局文件,也可能是由于某些资源缺失,但您已经在XML文件中定义了它。

如果在res / drawables-mdpi等文件夹中有任何其他的,甚至未使用的(!)或未引用的(!)图像,这些文件不符合文件命名约定(可能只包含[a-z0-9_。]), R.java类可能不会生成,导致所有其他帖子引用的事件链。希望能帮助到你!


192



我对样本ApiDemos有这个问题。 strings.xml文件中缺少某些资源。 Eclipse的控制台中列出了XML错误。 - lemotdit
你怎么检查错误?在构建/运行时,我的控制台中什么都没有 - Vincent
这是正确的,非常令人讨厌。 - sarwar
如何找出WHICH xml文件导致错误? Eclipse没有标记它们! - Yar
我在hdpi文件夹中有两个同名的图像(1个用png,1个用jpg格式)删除其中1个解决了问题 - Haseeb Jadoon


我的项目开头包含一个r.java.at,R.layout.main工作正常。但是,添加一些代码后它不起作用,并且错误是R.layout.main无法解决。问题是什么?

看看你的进口。可能是这条线:

import android.R;

将在那里。如果是这种情况,请删除它,以便您的项目将使用默认的Android Resources类解析R,但使用从/ res /文件夹自动生成的类。


128



谢谢@Dimitar,这解决了我的问题! Eclipse和自动导入功能似乎通过自动添加导入行来获得。 - Steven
当我使用大写字母命名布局时,我也遇到了类似的问题 - Travis
谢谢@Dimitar ....为什么这个导入,导致这些错误? - Mohsen Afshin
这是人们得到“未找到R”的五大原因之一。我已经编译了一个问题/解决方案页面,其中的图像显示了下面链接的主要5。真的希望这份名单可以帮助人们,因为这是一个普遍的问题。 spragucm.wordpress.com/2014/05/13/... - Chris Sprague
删除R之后,在某些地方R被用作类并且现在给出错误,如何解决? - Narendra Jaggi


另一件可能导致这个问题的事情:

我安装了新的ADT(第22节)。它停止了创造 gen 包含的文件夹 R.java。解决方案是从Android SDK Manager安装新的Android SDK Build Tools。

找到解决方案 这里


94



我也是。当我选择SDK管理器时,请注意,构建工具会显示自动检查安装,并附上说明 不 安装!是什么赋予了??? - David at HotspotOffice
我遇到过同样的问题。我很高兴你分享了这个。两天我从我自己的代码看了一下错误。我对谷歌非常反对,因为这个错误信息很难解决,但它是由自己的错误造成的,尽管工具不能正确报告导致它的原因。我对我的项目进行了相同的时间更改,所以我认为这是我的错。 - Reijo Korhonen
为我工作,谢谢!它只是强化了我的口头禅:“在开发过程中永远不会更新任何东西”。 - Rodrigo Dias
我一直在寻找答案,但没有任何对我有用。我认为这是一个日食或sdk问题。所以你说,我只是删除prev eclipse捆绑并重新安装它。然后它正在工作。你的答案得到了帮助 - beginners
这是我的问题!浪费了一天试图修复R错误,添加/删除引用,并尝试其他选项。我是一个全新的ADT设置,还有一个新的Android项目创建,但仍然出现错误。最后,我必须安装Android SDK工具,Android SDK平台工具和SDK构建工具的所有可用更新:p - Saurabh Kumar


R.java 是Android Eclipse插件创建的文件 建立你的申请。 R.java 是在“gen”下创建的 目录。该文件是根据“res”中的信息生成的 目录。如果你在Eclipse上运行选择“Project” - >“Clean ...” 菜单,它将删除然后重新生成 R.java文件。

当你改变你的问题时,会出现“无法解决R”的问题 包名称在 AndroidManifest.xml 文件。它使用你的Android 包名称在“gen”目录下创建一个子目录 它存储了 R.java文件。

Eclipse可能在执行清理时遇到问题,因为它很困惑 在哪里 R.java 文件是您更改Android包时 名称。您可以重命名下的子目录 gen 匹配你的 新的软件包名称,或者您可以将软件包名称更改回旧名称 名称。执行clean操作,然后将程序包名称更改为新名称 你要。如果您阻止Eclipse尝试构建,这将最有效 当您更改包名称时。在“项目”菜单下 取消选中“自动构建”选项以及 “清理......”对话框询问是否应该“立即开始构建” 取消选中该框,以便在您更改时不会尝试构建 包裹名字。更改名称后,您可以转为“构建” 自动“重新开启。

请注意,如果你的 AndroidManifest.xml 文件包名称不匹配 你的Java包名称,Eclipse最终会自动添加一个 “import <您的Android软件包名称> .R;”在你的所有 .java 档 有任何参考R.如果你改变你的 AndroidManifest.xml 包名称,有时Eclipse不会更新所有这些添加的内容 进口。如果发生这种情况,请使用Eclipse重构(ALT + 转移 + [R)将您的一个Java文件中的import语句更改为 你的新 AndroidManifest.xml 包裹名字。最好这样做 而您已禁用“自动构建”。


85



这看起来像没有参考的剪切和粘贴 - Casebash
尽管所有文件名和内容都是OK,但多次复制/粘贴文件和名称重构会导致同样的问题。清理项目,手动删除R.java和所有导入标题,然后重建这些导入标题(仍然使用CTRL + SHIFT + O)工作正常。 - hornetbzz
这对我有用。我在清单中更改了包名称。我必须在引用生成的R类值的类中使用ctrl-shift-O才能添加正确的导入。 - Chuck Krutsinger
这为我修好了。还看到过去出现导入问题,但这次问题是清单中的包名称与src文件夹中的包名称不匹配。 - Jim Range
我的申请中有两项活动。其中一个包含与生成R的包名称不同的包名称。我必须使用类似的东西手动导入R. import com.example.main.package.name.R; - Oliver Moran


说的是对的

R是一个自动生成的类,它包含用于标识>资源的常量。如果您没有R.java文件(它将是带有1.5 SDK的Eclipse中的gen / eu.mauriziopz.gps / R.java),我建议关闭并重新打开您的项目或转到> Project> Build all (并按照> Josef的推荐选择“自动构建”)。如果这不是尝试创建一个新项目,如果重新创建问题而不是>再次发布这里,我们将详细介绍。

但我发现还有另一个问题导致了第一个问题。 SDK目录中的工具没有执行权限,因此就像Eclipse不存在一样,因此它没有构建 R.java文件。

因此,修改权限并选择“自动构建”解决了这个问题。


82



重新进口该项目就成了伎俩。 - Angelo Tricarico
如何修改权限? - Jignesh Manek
@Jignesh - cd $ANDROID_SDK_ROOT/build-tools/<version>。然后 chmod a+x 在文件上 aapt, aidl, dexdump, dx等 ANDROID_SDK_ROOT 应该在您的环境中设置,它将指向您的SDK安装。例如, /opt/android-sdk。设置两者都很重要 ANDROID_SDK_ROOT 和 ANDROID_NDK_ROOT 因为Android工具在内部使用它们。看到 推荐的NDK目录? 在NDK用户列表中。 - jww
@Lewis ..我已经选择了“自动构建”,但错误仍然存​​在。 - d_unknown


R是一个自动生成的类,它包含用于标识资源的常量。如果您没有R.java文件(它将是带有1.5 SDK的Eclipse中的gen / eu.mauriziopz.gps / R.java),我建议关闭并重新打开您的项目或转到Project> Build all(和按照Josef的推荐选择“自动构建”。如果这不是尝试创建一个新项目,如果问题被重新创建,而不是再次发布,我们将详细介绍。


36



这对我有用,但我必须首先“项目 - >清洁......”。 - Matt Connolly


关闭所有文件,清理项目,重启Eclipse。


28



+1但有时它需要3次eclipse重启和7次项目清理。继续尝试;-) #rant - Matthias Bauch
将其与触摸(编辑+保存).xml文件(strings.xml ...)混合。 - Ali Shakiba