首页 文章

R无法解析 - Android错误

提问于
浏览
1008

我刚下载并安装了新的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);
    }
}

Eclipse给了我错误

R无法解决

在线

setContentView(R.layout.main);

为什么?

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

30 回答

  • 7

    只需转到Android顶级菜单列表即可 . 单击 Build 菜单,在Build下单击 Rebuild Project .

    enter image description here

  • 132

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

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

    import android.R;
    

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

  • 19

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

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

    找到解决方案here

  • 4

    每当你得到

    R无法解决

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

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

  • 95

    确保您安装了Android构建工具表单sdk manager

    项目右键单击属性 - > Java BuildPath选择库并添加android-support.jar,按照这些步骤操作 .

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

    enter image description here

  • 16

    在我的x64 Linux Mint安装上出现此错误 . 事实证明,结果是 ADB 二进制文件失败,因为没有安装 ia32-libs 包 . 只需运行 apt-get install ia32-libs 并重新启动Eclipse即可修复错误 .

    如果您的x64发行版没有ia32-libs,您将不得不使用Multiarch .

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

    希望这有助于某人 .

  • 9

    最简单的解决方案 - 有时您只需要保存正在处理的XML文件以启动自动生成器 .

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

  • 384

    不幸的是,现有的问题都没有帮助 . 由于我的问题似乎是特定于平台的,所以这可能只有在 Ubuntu 64 Bit (我目前正在使用Ubuntu 12)时才有效 . 起初我没有看到"Problems"窗口,它已经暗示了一个解决方案,在64位环境中你需要32位库,可能会丢失:

    sudo apt-get install ia32-libs

    我安装了包并重建了我的项目,这为我解决了这个问题 .

  • 87

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

  • 11

    尝试将新的XML布局文件名设置为小写 . 例如,使用 my_file.xml 而不是 myFile.xml .

  • 5

    将错误添加到与包的根命名空间不同的命名空间也可能导致此错误 .

    例如,如果 com.example.myapp 是包的根命名空间,则可以向 com.example.myapp.activities 命名空间添加活动 .

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

    要修复导入,活动中默认命名空间中的R应为:

    import com.example.myapp.R;
    
  • 5

    删除 main.out.xml . 我还知道该文件的用途,但删除它可以解决问题 .

  • 198

    值得一试 AndroidManifest.xml . 属性 package 具有正确的值 .

    那是:

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

    更改后,将重新生成 R.java .

  • 13

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

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

    *注意:Eclipse有时喜欢在使用资源的文件顶部添加“import android.R”语句,尤其是当您要求Eclipse对导入进行排序或管理时 . 这会导致你的作品破裂 . 留意这些错误的import语句并删除它们 . *

    在浏览Android示例教程时,我经常使用Ctrl Shift O命令来"Organize Imports"并生成任何缺少的import语句 . 有时这会产生不正确的import语句,这会隐藏 R.java 构建时自动生成的类 .

  • 4

    通常这是因为您在创建项目时提供的MinSDK版本号 . 例:

    如果你希望2.1最小,Android 2.1实际上是API Level 7 .

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

    创建项目时,必须选择“构建目标”API,该列表中名为“API级别”的最后一列显示填充MinSDK设置时要查找的编号 .

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

  • 14

    说的是对的

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

    但是我有权执行,所以就像没有't exist for Eclipse, thus it didn' t构建 R.java 文件一样 .

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

  • 4

    检查XML文件名 . 确保它们都是小写的 .

    还要确保所有图像资源名称都在LOWER CASE中 . 我的jpg文件名下有一个大写字母,它在我的项目中导致了R未解决的错误 .

  • 824

    首先检查是否有任何xml布局中的错误,如果然后再解决它 .

    否则从项目中删除junit依赖项并重建项目 .

    enter image description here

  • 5

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

  • 9

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

  • 27

    我有Android 8的例子,并试图使用Android 7 SDK . 当我关闭项目并重新打开应用程序文件夹并选择使用Android 8 SDK时,它能够找到R文件 . 希望这可以帮助 .

  • 4

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

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

  • 6

    除了之前答案中的重要建议外,请确保设置了Android目标:

    • 右键单击您的项目

    • 选择“属性”

    • 在左侧菜单中选择Android

    • 勾选相应项目构建目标旁边的框 .

    • 单击“应用”和“确定”

    编辑:一年后,我找到了另一个原因 . 我的drawable文件夹中有一个.jpg图像,其名称与.png图像相同 . 在我的代码中引用此图像必定使程序混淆,并且它给出了“R无法解析”错误 .

  • 19

    R.java 是Android Eclipse插件在构建应用程序时创建的文件 . R.java 在"gen"目录下创建 . 此文件是根据"res"目录中的信息生成的 . 如果在Eclipse菜单上运行select "Project" - > "Clean...",它将删除然后重新生成 R.java 文件 .

    当您在 AndroidManifest.xml 文件中更改包名称时,会发生问题"R cannot be resolved" . 它使用您的Android软件包名称在"gen"目录下创建一个子目录,用于存储 R.java 文件 .

    Eclipse可能在执行clean时遇到问题,因为当您更改Android软件包名称时, R.java 文件的位置很混乱 . 您可以重命名 gen 下的子目录以匹配新的软件包名称,也可以将软件包名称更改回旧名称 . 执行clean操作,然后将程序包名称更改为所需的新名称 . 如果在更改程序包名称时阻止Eclipse尝试构建,则最有效 . 在"Project"菜单下,取消选中"Build Automatically"选项,同时"Clean..."对话框询问是否应该取消选中该框,以便在更改包名时不会尝试构建 . 更改名称后,您可以再次打开"Build Automatically" .

    请注意,如果您的 AndroidManifest.xml 文件包名称与您的Java包名称不匹配,Eclipse将最终自动在所有 .java 文件中添加"import <your Android package name>.R;"行,这些文件对R有任何引用 . 如果您更改您的 AndroidManifest.xml 包名称,有时Eclipse不会更新所有这些添加的导入 . 如果发生这种情况,请使用Eclipse重构(ALT Shift R)将其中一个Java文件中的import语句更改为新的 AndroidManifest.xml 软件包名称 . 最好在禁用"Build Automatically"时执行此操作 .

  • 10

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

  • 23

    您可能需要更新/安装SDK工具 . 重新启动Android SDK Manager并安装一个新项目:Android SDK Build-tools.one一次删除,修复哪一项适合您 .
    enter image description here

  • 4

    R 是生成的类 . 如果您使用的是Android Development Tools (ADT),那么无论何时构建项目都会生成它 . 您可能已关闭'Build Automatically' .

  • 12

    您可能需要更新SDK工具 . 重新启动Android SDK Manager并安装新项目:Android SDK Build-tools .

    enter image description here

  • 38

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

  • 83

    我也有这个问题 . 原来,我无意中从 strings.xml 文件中删除了"app_name"字符串资源,这导致了一个无声错误 . 一旦我将其添加回来,R类就会成功生成,所有内容都会恢复运行 .

相关问题