包 R 不存在

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

现在它正在影响简单的 webview应用程序

我的 main.xmlstring.xml都出错了,我很困惑。

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

我甚至加载了 Netbeans,我得到了同样的东西。干净不管用。我可以自己写 R.java文件吗?

这个 R是什么? 不是 R应该对应 R.java

233047 次浏览

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

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

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

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

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

做什么

import android.R;

而不是

import com.example.R;

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

导入什么文件到得到 R 错误的文件中?

我对 R 文件的理解是,它们是 Android 应用程序中所有属性的自动生成的参考列表。因此,你不能自己改变它。

您正在使用 Eclipse 来构建这个项目吗? 较早的项目在更新 Eclipse 之前是否出现了这些错误? 哪些引用出现了错误?

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

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

简单来说:

import your.app.package.R;

当然,用你的应用程序包替换 your.app.package

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

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

  • 在 IntelliJ 中,选择 Tools > Android > Generate source for < project >
  • (如果您知道其他 IDE 中的方法,请随意编辑此答案!)

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

记得把这个也检查一下。

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

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

另一个问题是,在一个类中,我正在使用 toString ()。Length ()来计算一个字符串,但是将它们替换为 TextUtils.IsEmpty (stringVal) ; 我想不出还有什么其他方法可以解决这个问题。

希望这对谁有帮助。

注意: 所有这些都是在 AS 0.8.6中实现的

附言。

由于 R.java 是自动生成的,所以请阅读标题: /* 自动生成的文件。不要修改。 * * 此类由 * aapt 工具从它找到的资源数据 * 不应用手修改。 */

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

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

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

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

我想它过去是有用的,但现在不是了。

如果在 MANIFEST 文件中更改程序包名称,就会发生这种情况

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

如果要更改软件包名称

  1. 在清单文件中手动更改包名称。
  2. 点击你的 R.java 类和按 F6。它将允许您将类移动到其他包,并且对该类的所有引用都将更新。

DR ,如果您得到错误“ package R does not 益不存在”,可能的原因是

  • XML 资源文件中的一些错误
    - > 修正 XML 错误
  • 当前的软件包不同于 R软件包(请参阅 package 属性)
    - > 汇入 R类别,例如 import com.example.android.R;
    - > 或使用来源的适当软件包,例如 package com.example.android;
    - > 或将 AndroidManifest.xml 中的 包裹属性更改为 <manifest xmlns:android="..." package="com.example.android" ...>如果合适的话
  • 使用的 R id 来自系统资源
    - > 不要导入 android.R,但以 android.作为违规 id 的前缀,例如 android.R.layout.simple_list_item_2
    当然,您可以导入 android.R而不是以 id 作为前缀,但这样就不能再导入应用程序 R类,而必须以应用程序 id 作为前缀,例如 com.example.android.R.id.main_menu

R 同学们是从应用程序的 它包含这些资源的 id,并且包含 在包中命名的 <manifest> 在相应的 AndroidManifest.xml文件中添加标记。

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


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


要在 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();
}
}

我解决了我的问题:

包 R 不存在

.

转到 AndroidManifest.xml文件,并改变了 minSDKVersion="17"从19

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

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

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

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

同步,清洁,然后重建与分级。

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

如果你在 android 工作室开发并重构了软件包名称,那么你应该在 android 清单和应用程序级别文件中更改软件包名称。

 applicationId "change here your package name"

和清单文件

 package="change here your package name"

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

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

如果这种情况发生在你身上,最坏的情况是你可能不得不备份你的文件,删除项目,只是拖动文件在那里和重新编译。希望不会走到那一步,但那将是你的核选择。

我得到了: “ error: package R does not alive”并假设为 javac 无法接触到 R.java。
因此,我将% PROJ _ LOC% gen 附加到 source cepath,并且它工作了! SOURCEPATH =% PROJ _ LOC% src;% PROJ _ LOC% gen

我不使用 Android Studio 或 Ant (或 XML)。

你可以试试

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

单击使缓存/重新启动失效按钮以重新启动项目

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

然后重建你的项目

希望能有帮助

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

只是去掉了我项目中的错误。我已经导入了一个示例项目,我已经改变了包文件夹,但我没有更新包在其中一个 Java 文件。

这个错误最可能的原因是“包 R 不存在”,即 Java 或清单文件中的包名不正确。确保它是正确的和同步的,然后做一个干净的构建。

有时候,只要将项目重新导入到 Android Studio 中,就可以解决这个问题。

错误的路径: 项目“现金”的图像指针,如果你已经作出的名称更改的路径,例如重构包或文件夹。然后只要再写一次 R 字母,编辑就会给出正确的路径,这样就行了。在这种情况下,您的文件名是正确的,并在 R 指针中引用的内容是存在的,但路径是错误的,因此清除和构建将无法工作。

示例: 我的软件包是 Mypc.f01,为了修复错误,您在活动中添加了以下一行:

import com.example.mypc.f01.R;

R.断裂的另一个例子是 注释处理

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

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

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

只要记住使用内部类中的 例如: R.raw.filename,它的包值类似于 AndroidManifest.xml 中的包值

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

我在使用 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使用了具有正确 package=属性的 AndroidManifest.xml,如果您正在使用 android_libraryandroid_binary上的 custom_package属性,请确保它被正确地拼写出来。

下面是一些可以用来消除这个错误的技术:-

  1. “清理您的项目”,Buidl-> “清理项目”
  2. 重建项目,建立-> 重建项目
  3. 打开清单并检查是否有任何资源丢失
  4. 如果缺少特定的 id,则添加它的签入布局
  5. 如果上述步骤不起作用,那么重新启动 android 工作室,使缓存无效

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

下面是为我工作。

  1. AndroidManifest.xml文件中,检查包名是否键入正确。
  2. Import com.example.appName.R; (import package _ name.R;)

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

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

//-app 包和映射到 app 包的主要资源

Order;//-sub 包

如果您需要访问类似,

OrderLayout-这里 R 不可用。

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

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

由于 xml 文件中的错误,此错误为100% 。您可以在 Logcat-> error 中检查这个特定的错误。然后解决这个问题。如果解决了 xml 错误,应用程序将运行。当你从其他来源拷贝一个代码时,它通常会出现。在我的例子中,在 xml 文件的 Button 中有一个错误。我没有正确地输入 Button。如果您解决了这个错误,那么您和您的应用程序将能够平稳地运行。如果还没有显示这个错误,不要担心,继续前进。

我就是这么解决的 在几次尝试 < strong > Build-> Clean Project 失败后,接着是 < em > < strong > Build-> Rebuild Project

步骤0 : 确保在 < strong > AndroidManifest.xml 中包名是正确的 对我来说是的

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

第一步 将光标置于 我的项目之前,然后按下 Shift + F6-> 重命名包-> 给出新的包名,并在 范围 下选择 所有地方-> < strong > Refactor

步骤2: 关闭自动导入

对于 Windows,它的 File-> Settings-> Editor-> General-> Auto Import

用爪哇语

动态添加明确的导入

优化动态导入

申请并保存

步骤3: 清洁和重建 Build-> Clean Project 后面跟着 < em > < strong > Build-> Rebuild Project

现在,当您在构建过程中得到错误时。打开文件,说 R.java 丢失或无法找到“ R”类

第四步: 打开该文件并转到代码中的导入部分,然后手动添加 < em > < strong > import com.example.myproject.R;

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

清理和重建,你是好去!

升级到 AGP 7.2后:

对于那些已经升级到 AGP7.2(稳定版! !)的可怜家伙:

  • AGP 升级助手将从清单中删除 package名称
  • 它不再需要,因为它将只是在档案上
  • 但是对 SafeArgs 的依赖性仍然没有得到正确的结果

希望你能比我少浪费几个小时. . :)

这种情况发生在我重构包名之后。我发现我需要更新 设置,等级文件中的 rootProject.name = "your_app_name"。一旦我这样做,错误就消失了。

终于找到了解决办法。

  1. 转到 档案 > 无效缓存
  2. 现在“ 将军”< strong > Clear file system cache and 本地历史 & 清除 VCS 日志缓存和索引
  3. 现在点击“ 无效并重启

首先检查所有的 Android 清单,并确保包的名称是正确的。如果有的话,还要检查项目中库的清单

其次, 添加“ import your.package.name.R;” 在受影响文件的头部。

我确信这两个选择中的任何一个都能解决你的问题