R无法解决 – Android错误

我刚刚下载并安装了新的Android SDK。 我想创build一个简单的应用程序来testing它的驱动器。

向导创build了这个代码:

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); } } 

但Eclipse给我的错误

R无法解决

在线

 setContentView(R.layout.main); 

为什么?

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

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

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

*注意:Eclipse有时候喜欢在使用资源的文件的顶部添加一个“import android.R”语句,特别是当您要求Eclipsesorting或以其他方式pipe理导入时。 这将导致你的制造破坏。 注意这些错误的导入语句并删除它们。

在阅读Android示例教程时,我经常使用Ctrl + Shift + O命令来“组织导入”并生成任何缺less的导入语句。 有时这会产生不正确的导入语句,这会隐藏在构build时自动生成的R.java类。

每次我遇到R没有生成,甚至消失的问题时,都是由于XML布局文件中的一些问题导致应用程序无法生成。

每当你得到

R无法解决

然后检查/res目录,并且必须有一些文件中有一些错误,这是阻止应用程序被build立。 例如,它可能是一个布局文件,也可能是由于缺less一些资源,但是您已经在XML文件中定义了它。

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

我的项目在开始时包含了一个r.java.at,R.layout.main工作良好。但是,添加一些代码后,它不起作用,错误是R.layout.main无法解决。问题是什么?

看看你的import。 机会是这样的:

 import android.R; 

将在那里。 如果是这样,请将其删除,以便您的项目不会使用默认的Android资源类来parsingR,而是使用从/ res /文件夹中自动生成的那个类来parsingR。

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

我安装了新的ADT(第22节)。 它停止创build包含R.java gen文件夹。 解决scheme是从Android SDK Manager安装新的Android SDK构build工具。

解决scheme在这里

R.java是Android Eclipse插件在构build应用程序时创build的文件。 R.java是在“gen”目录下创build的。 该文件是从“res”目录中的信息生成的。 如果在Eclipse菜单上运行select“Project” – >“Clean …”,它将删除并重新生成R.java文件。

当您在AndroidManifest.xml文件中更改包名时会发生“R无法解决”的问题。 它使用你的Android程序包名称在“gen”目录下创build一个存储R.java文件的子目录。

Eclipse可能会执行干净的问题,因为当您更改Android程序包名称时,它会对R.java文件的位置感到困惑。 您可以重命名gen下的子目录以匹配新的软件包名称,也可以将软件包名称更改回旧的名称。 做干净的,然后更改包名称到你想要的新名称。 如果您在更改软件包名称时停止尝试构buildEclipse,则此方法效果最佳。 在“项目”菜单下,取消选中“自动构build”选项,并且在“清理…”对话框询问是否应该“立即开始构build”时取消选中该框,以便在您更改时不尝试构build包名。 更改名称后,可以重新打开“自动构build”。

请注意,如果您的AndroidManifest.xml文件包名称与您的Java包名称不匹配,则Eclipse将自动添加一个“import <您的Android包名称> .R;” 在你所有的.java文件中有任何对R的引用。如果你改变你的AndroidManifest.xml包的名字,有时Eclipse不会更新所有这些添加的导入。 如果发生这种情况,请使用Eclipse重构( ALT + Shift + R )将其中一个Java文件中的import语句更改为新的AndroidManifest.xml包名称。 禁用“自动构build”时最好这样做。

会说什么是对的

R是一个自动生成的类,它包含用于识别您的资源的常量。 如果你没有一个R.java文件(这将是Eclipse的1.5版SDK中的gen / eu.mauriziopz.gps / R.java),我会build议closures并重新打开你的项目,或者打开> Project> Build all (并按照Josef的build议select“Build Automatically”)。 如果这不起作用,那就尝试做一个新的项目,如果问题重新创build,请再次发布,我们将详细介绍。

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

所以修改权限并select“Build Automatically”解决了这个问题。

R是一个自动生成的类,它包含用于标识资源的常量。 如果你没有一个R.java文件(在1.5版本的Eclipse中是gen / eu.mauriziopz.gps / R.java),我会build议closures并重新打开你的项目,或者打开Project> Build all(和按照Josef的build议,在那里select“Build Automatically”)。 如果这样做不行,那就试试做一个新的项目吧,如果问题再次出现了,那么我们会再详细介绍一下。

closures所有文件,清理项目,重新启动Eclipse。

此错误也可能是由于将活动添加到与您的程序包的根名称空间不同的名称空间而导致的。

例如,如果com.example.myapp是包的根名称空间,则可以将一个活动添加到com.example.myapp.activities名称空间。

这将产生“R无法解决”的错误。

要修复导入,R在你的活动的默认命名空间应该是:

 import com.example.myapp.R; 

除了以上答案中的重要build议,请确保您的Android目标已设置:

  1. 用鼠标右键单击您的项目
  2. select属性
  3. 在左侧菜单中selectAndroid
  4. 在相应的Project Build Target旁边勾选一个框。
  5. 单击应用并确定

编辑:一年后,我发现另一个原因。 我的可绘制文件夹中有一个.jpg图像,名称与.png图像相同。 在我的代码中引用这个图片必须让程序感到困惑,并给出了“R无法解决”的错误。

AndroidManifest.xml检查是值得的。 属性package具有正确的值。

也就是<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your.correct.package.name" ...

改变之后, R.java将被重新生成。

确保你已经安装了Android构build工具,forms为sdk manager

项目右键单击属性 – > Java BuildPathselectLibrary并添加android-support.jar,按照这些步骤操作。

转到Project-> Properties-> Java Build Path,然后selectOrder and export选项卡。 设置android-support .jar库并将其放到列表的顶部。 并清理和重build..它适用于大多数情况下

在这里输入图像描述

我第一百万次遇到了这个问题,并意识到导致它的原因:我在名称中创build了一个大写字母的XML文件。 您在/res所有XML文件名必须匹配[a-z0-9\\._]

最简单的解决scheme – 有时您只需要保存正在处理的XML文件,以使自动生成器启动。

保存文件(例如main.xml),然后删除R.java文件,看看重新生成的R.java是否解决了R解决问题。

检查XML文件名称。 确保他们都是小写字母。

还要确保任何图像资源名称也都在LOWER CASE中。 我用我的jpg文件的名字写了一个大写字母,并且在我的项目中导致了R未解决的错误。

R是生成的类。 如果您正在使用Android开发工具(ADT) ,则在项目生成时会生成它。 您可能会closures“自动构build”。

这个错误在我的x64 Linux Mint安装中突然出现。 事实certificate,结果是ADB二进制文件失败,因为没有安装ia32-libs软件包。 只需运行apt-get install ia32-libs并重新启动Eclipse即可修复错误。

如果你的x64发行版没有ia32-libs,你将不得不去使用Multiarch。

在这篇文章中检查#4和#5: http : //crunchbang.org/forums/viewtopic.php?pid=277883 # p277883

希望这有助于某人。

您可能需要更新SDK工具。 再次重新启动Android SDKpipe理器并安装一个新项目:Android SDK构build工具。

在这里输入图像描述

我也有这个问题。 事实certificate,我已经无意中删除了strings.xml文件中的“app_name”string资源,这导致了无提示错误。 一旦我将其添加回来,R类成功生成,一切都恢复正常运行。

您可能需要更新/安装SDK工具。 再次重新启动Android SDK Manager,并安装一个新的项目:Android SDK Build-tools.one一个删除,修复哪一个为你工作。 在这里输入图像描述

尝试使您的新的XML布局文件名称小写。 例如,使用my_file.xml而不是myFile.xml

R.java可能无法自动生成的另一个原因是,如果您有像res / drawable-hdpires / drawable-mdpires / drawable-ldpi这样的目录

1.6+对于这些目录似乎没问题,但1.5不需要它们。 当我删除这些目录时, R.java开始为我自动生成。

不幸的是,现有的问题都没有帮助。 由于我的问题似乎特定于平台,这可能只适用于Ubuntu 64位 (我目前正在使用Ubuntu 12)。 起初,我没有看到“问题”窗口,这个窗口已经暗示了一个解决scheme:在64位环境中,您需要32位库,这可能会丢失:

sudo apt-get install ia32-libs

我安装了软件包并重build了我的项目,这个问题解决了我的问题。

重启你的电脑。
除了这种方式,没有什么能帮上我

只要去Android的顶部菜单列表。 点击Build菜单,在Build下点击Rebuild Project

在这里输入图像描述

我有Android 8的例子,并试图使用Android 7 SDK。 当我closures项目并重新打开应用程序文件夹并select使用Android 8 SDK时,它能够findR文件。 希望这可以帮助。

在我的情况下,我的AndroidManifest.xml有一个错误。 其他人说,你的XML文件必须是免费的,但我只是在res /文件夹中查找。 find并修复尽可能多的错误,问题可能会自行解决。

很多时候,这是因为创build项目时提供的MinSDK版本号。 例:

如果你想要2.1是最低的,那么Android 2.1实际上是API Level 7。

当你浏览你下载和安装的SDK时,你可以看到我在说什么。 导航到您安装SDK的位置(例如, C:\android-sdk-windows ),然后打开名为“platforms”的文件夹。 你会看到类似于“android-7”的文件夹列表,如果你打开一个source.properties文件,当用文本编辑器打开时,会显示相应的平台版本。

创build项目时,必须select“构build目标”API,列表中名为“API级别”的最后一列显示填充MinSDK设置时要查找的数字。

这可能是导致R.java文件不是在Project> gen> packagename> R.java下创build的最常见的错误之一。

删除main.out.xml 。 我是新来的,不知道这个文件用于什么,但删除它清除了问题。