127

我得到可怕的包裹R不存在,它正在杀死我。代码很好我在市场上有运行代码的应用程序。

现在它正在影响简单的webview应用程序。o.0

R.string.app_name是我的错误main.xmlstring.xml很好。我很困惑。

我重新打开了"borrow"一些代码的旧版本,它被淹没了R. errors.我做了一个干净的,除了R.android在顶部添加导入之外没有任何改变。

我什至加载到 Netbeans 并得到同样的结果。清洁不起作用。我可以自己写R.java文件吗?

这是什么R东西?不是R。应该对应R.java

4

31 回答 31

140

对于遇到这种情况的任何人,我通过重命名命名空间文件夹进行了重构。我只是忘了编辑 AndroidManifest,这就是我收到此错误的原因。

确保你也检查这个。

于 2014-02-21T15:16:02.870 回答
101

只是为了简单起见:

import your.app.package.R;

当然,替换your.app.package为您的应用程序包。

在所有使用 R 资源引用的类中,使用删除任何其他import.R,即import android.R;

于 2013-06-12T02:21:05.063 回答
56

TL;DR,如果您收到错误“包 R 不存在”,可能的原因是

  • XML 资源文件中的一些错误
    -> 修复 XML 错误
  • 当前包与包不同R(参见package AndroidManifest.xml 中的属性)
    -> 导入R类,例如import com.example.android.R;
    -> 或在源中使用适当的包,例如package com.example.android;
    -> 或将 AndroidManifest.xml 中的属性更改为 <manifest xmlns:android="..." package="com.example.android" ...>,如果合适的话
  • 使用的Rid 来自系统资源
    -> 不导入 ,android.R但在有问题的android.id前加上.android.R.layout.simple_list_item_2
    android.RRcom.example.android.R.id.main_menu

该类是从应用程序的资源中自动生成的R 它包含这些资源的s,并包含在 相应文件id的标记中命名的包中 。<manifest>AndroidManifest.xml

如果资源 XML 文件中没有错误,R.java则会在下面的包子目录中生成源gen/并编译。


包中还有另一个Randroid。该类android.R包含一些嵌套类,这些嵌套类又包含系统资源id的 s 和其他值。


要在 Java 中使用类,您必须使用整个包命名该类,例如

java.util.List<Object> list = new java.util.ArrayList<Object>();

或导入该类,然后在没有包的情况下使用它

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();

如果当前类和使用的类都在同一个包中,您也可以使用一个类而不命名包,例如

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}
于 2015-05-01T11:34:50.120 回答
25

永远不要尝试自己编写 R 类!

您是否在文件中导入了正确的 R 类?

正在做

import android.R;

代替

import com.example.R;

似乎是很多人的问题。在清理和构建之后,我的课程有时会导入错误的课程。

于 2012-10-20T07:30:11.887 回答
12

如果您在 android studio 中开发并重构了包名,那么您应该在 android manifest 和 app gradle 文件中更改包名。

 applicationId "change here your package name"

并在清单文件中

 package="change here your package name"
于 2015-12-28T04:14:35.603 回答
10

R.java 是一个自动生成的文件,如果您在 xml 文件中有错误,它通常不会被编译。

否 您不能编写自己的 R.java 文件,它必须由资源编译器生成。

检查所有 xml 文件中的错误。

于 2012-10-20T07:27:13.687 回答
7

我想它以前可以工作,但现在它不..

如果您在 MANIFEST 文件中更改 PACKAGE 名称,可能会发生这种情况

<manifest
   package="com.example.android...."

如果要更改包名称

  1. 在清单文件中手动更改包名称。
  2. 单击您的 R.java 类,然后按 F6。它将允许您将类移动到其他包,并且对该类的所有引用都将被更新。
于 2015-02-06T20:50:04.203 回答
6

R 类是从您的 XML 文件(UI 布局、国际化字符串等)自动生成的 Java 代码。如果该代码以前可以工作(看起来确实如此),您需要告诉您的 IDE 以某种方式重新生成这些文件:

  • 在 IntelliJ 中,选择 Tools > Android > Generate sources for <project>
  • (如果您知道其他 IDE 中的方法,请随时编辑此答案!)
于 2014-01-23T18:41:47.473 回答
4

我在使用 Bazel 构建 Android 应用程序时遇到了这个错误:

error: package R does not exist
                + mContext.getString(R.string.common_string),
                                      ^
Target //libraries/common:common_paidRelease failed to build
Use --verbose_failures to see the command lines of failed build steps.

确保您的android_library/android_binary使用AndroidManifest.xml具有正确package=属性的 an,如果您在or上使用该custom_package属性,请确保其拼写正确。android_libraryandroid_binary

于 2018-07-15T22:05:09.317 回答
4

在子包中使用 R 时可能会发生这种情况示例:

com.example; // -app 包和主资源映射到应用包

com.example.order; // -子包

如果您需要访问诸如以下的资源,请在子包中

R.Layout.orderLayout - 这里 R 将不可用。

为了解决这个问题,您将从主包中导入 R。IE。对于 com.example.order 文件夹/包中的文件,您将导入

包 com.example.order 导入 com.example.R;

于 2021-03-06T04:17:03.720 回答
3

删除导入android.R;从所有文件中......一旦清理项目并构建项目......它将生成

于 2012-10-20T07:58:33.713 回答
3

示例:我的包是com.example.mypc.f01,要修复错误,您可以在 Activity 中添加以下行:

import com.example.mypc.f01.R;

于 2018-02-28T07:45:02.587 回答
3

以下是一些可用于消除此错误的技术:-

  1. 清理你的项目,Buidl->clean Project
  2. 重建项目,构建 -> 重建项目
  3. 打开清单并检查是否缺少任何资源
  4. 如果缺少特定 id 的签入布局,请添加它
  5. 如果上述步骤不起作用,则重新启动 android studio 并使缓存无效
于 2019-11-27T06:38:27.823 回答
2

就我而言,我意识到我在项目中创建了多个包。在 Android 清单中,我发现提供程序名称错误地保存了 MyContentProvider 的值,而不是 .provider.MyContentProvider。我的主要包(带有 UI)是 co.companyname.database.provider 而不是 co.companyname.database。

然后在受影响类的导入语句上,我只需右键单击并要求 Android Studio (0.8.6) 优化我的导入语句。我还注意到,如果您在 IDE 右上角的 AS 搜索栏中搜索 .R,您可以找到一个自动生成的 R.java 文件,该文件是您的包的一部分。此时,您无需更改任何内容。在您更正 Android Manifest 文件并重建后,Studio 应修复项目。

另一项是在一个类中,我正在使用 toString().length() 来评估一个字符串,但将它们换成了 TextUtils.IsEmpty (stringVal); 想不出我为解决这个问题所做的任何其他事情。

希望这可以帮助某人。

NB - 所有这一切都与 AS 0.8.6

附言

R.java 是自动生成的,因此请阅读标题:/* AUTO-GENERATED FILE。不要修改。* * 这个类是由 * aapt 工具从它找到的资源数据中自动生成的。* 不应手动修改。*/

于 2014-08-23T23:44:26.463 回答
2

当我遇到这种情况时,我创建了一个新项目,并将文件从我的旧项目复制到我的新项目。

  1. 开始一个新项目
  2. 将旧文件添加到新项目中(复制并右键单击布局,drawables,com.packagename,...)以粘贴我的旧项目文件

但是,我仍然有同样的问题:R does not exist. 然后我意识到我已经从记事本复制并粘贴了 Manifest 到 Android Studio 清单中,并且我没有更改清单文件中的包名称。

因此,一旦我将清单中的包名称更改为新项目名称,我创建的新项目就可以正常工作。

于 2014-12-17T14:45:21.937 回答
2

下面是为我工作的。

  1. AndroidManifest.xml文件中,检查包名是否输入正确。
  2. 导入 com.example.appName.R; (导入包_name.R;)

如果第一步不起作用,请尝试第二步。

于 2020-08-16T16:57:35.193 回答
1

您将哪些文件导入到出现 R 错误的文件中?

我对 R 文件的理解是,它们是自动生成的 Android 应用程序中所有属性的引用列表。因此,您无法自行更改。

您是否使用 Eclipse 来构建这个项目?旧项目是否在更新 Eclipse 之前出现了这些错误?出现错误的参考文献是什么?

检查以确保您没有从另一个应用程序中的其他复制代码导入另一个 R 文件。

于 2012-10-20T07:31:09.157 回答
1

这就是我解决它的方法 在多次尝试构建失败后 -> 清理项目,然后是构建 -> 重建项目

第 0 步: 在我的情况下,确保AndroidManifest.xml中的包名称是正确的

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myproject"> 

步骤 1 将光标放在myproject之前,然后按Shift + F6 -> Rename Package -> 提供新的包名称,然后在Scope下选择All Places -> Refactor

第 2 步:关闭自动导入

对于 Windows,它的文件 -> 设置 -> 编辑器 -> 常规 -> 自动导入

在 Java 下

取消选中即时添加明确的导入

取消选中动态优化导入

应用并保存

第 3 步:清理并重建 Build -> Clean Project,然后是Build -> Rebuild Project

现在,当您在构建期间收到错误消息时。打开显示 R.java 丢失或找不到“R”类的文件

第 4 步: 打开文件并转到代码中的导入部分并手动添加import com.example.myproject.R;

对构建部分中提到的所有具有此错误的文件重复相同的操作

清洁和重建,你很高兴!

于 2021-10-20T17:42:02.847 回答
1

你可以试试

Android Studio 顶部菜单 > 文件 > 使缓存无效/重新启动...

单击无效缓存/重新启动按钮以重新启动您的项目

如果某些片段类 R 类没有正确解析,请再次解析 R.xxxx.xxx

然后重建你的项目

希望能帮助到你

于 2016-12-09T15:05:35.003 回答
1

刚刚摆脱了我项目中的错误。我已经导入了一个示例项目,我已经更改了包文件夹,但我没有更新其中一个 java 文件中的包。

此错误“包 R 不存在”的最可能原因是 Java 或清单文件中的包名称不正确。确保它正确且同步,然后进行干净的构建。

于 2017-07-18T14:28:36.567 回答
1

由于 xml 文件中的错误,此错误为 100%。您可以在 Logcat->error 中检查该特定错误。然后解决。如果解决了 xml 错误,则应用程序将运行。当您从其他来源复制代码时,通常会出现这种情况。在我的情况下,xml 文件中的 Button 出现错误。我没有正确输入 Button 。如果您解决了该错误,您和您的应用程序将顺利运行。如果还显示此错误,请不要担心并继续前进。

于 2021-04-11T09:12:32.593 回答
1

每次我切换计算机并尝试从通过 USB 传输的文件中导入旧项目时都会遇到这个问题。

我的解决方法是创建一个新项目并将文件复制(拖动)到 IDE(当前使用 Netbeans)并重建。这是一个烦恼和一个有点hacky的解决方案,但它解决了这个问题。

如果您遇到这种情况,最坏的情况是您可能必须备份文件,删除项目,然后将文件拖到那里并重新编译。希望它不会发生,但那将是你的核选择。

于 2016-05-31T02:41:52.520 回答
0

我忘记在我的 java 类的顶部添加我的“包”的“名​​称”。检查你的是否真的被添加了。

于 2020-04-19T18:10:15.793 回答
0

如果您在 Android Studio 中遇到此错误:

检查 Gradle 模块文件 -> defaultConfig -> applicationId 设置。

检查 AndroidManifest.xml -> 清单包标记。

检查所有 src java 文件中的包声明。

使用 Gradle 同步、清理然后重建。

永远不要构建自己的 R 文件。R 是从您的源 java 文件和构建设置自动生成的。

于 2015-08-18T05:14:27.227 回答
0

错误的路径:项目“兑现”了指向图像的指针,如果您对路径进行了名称更改,例如重构包或文件夹。然后只需简单地再次写 R 字母,编辑器会建议正确的路径,它会起作用。在这种情况下,您的文件名是正确的,并且 R. 指针中引用的内容存在,但路径错误,因此清理和构建将不起作用。

于 2018-02-10T21:06:53.580 回答
0

如果在解决合并冲突后出现此错误,简单的 Build -> Clean project 可能会有所帮助。

于 2017-04-17T14:37:26.520 回答
0

我有:“错误:包 R 不存在”并假设 javac 无权访问 R.java。
所以我将 %PROJ_LOC%\gen 附加到源路径,它工作了!SOURCEPATH=%PROJ_LOC%\src;%PROJ_LOC%\gen

我没有使用 Android Studio 或 Ant(或 XML)。

于 2016-10-25T03:34:40.293 回答
0

有时,只需将项目重新导入 Android Studio 即可解决。

于 2017-09-08T07:40:15.337 回答
0

R.破损的另一种情况是Annotations Processing

某些处理可以引用位于某些文件夹或文件夹级别中的类。如果您将所需的课程移动到其他位置,您可以获得R.作为未知课程。

不幸的是,这个问题的错误指针在 Android Studio 中并不明显。

于 2018-03-05T09:05:24.990 回答
0

自己编写 R.java 没有任何好处,因为它在每次构建时都会更改,

请记住使用R.something 例如:R.raw.filename来自内部类,其包值类似于 AndroidManifest.xml 中的包值

因为 R. 资源 ID 是为当前应用程序或库定义的,并且它们都在编译时检查是否存在,因此允许从不针对当前应用程序或库的“代码”访问它们是没有意义的,并且可以可以在其他地方使用。

于 2018-03-29T12:00:35.963 回答
-2

我解决了我的问题:

包 R 不存在

.

转到AndroidManifest.xml文件并minSDKVersion="17"从 19更改

于 2015-06-21T21:15:13.983 回答