软件包R不存在

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

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

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

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

我甚至加载到Netbeans,我得到同样的东西。 清洁不工作。 我可以自己写R.java文件吗?

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

对于遇到这个问题的人来说,我通过重命名命名空间文件夹来进行重构。 我忘了也编辑AndroidManifest,这就是为什么我得到这个错误。

确保你也检查了这一点。

只是为了使这个简单:

 import your.app.package.R; 

当然,用您的应用程序包replaceyour.app.package

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

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

  • XML资源文件中出现一些错误
    – >修复XML错误
  • 当前包与R包不同(请参阅AndroidManifest.xml中的package属性)
    – > import R类,例如import com.example.android.R;
    – >或者在源代码中使用适当的包,例如package com.example.android;
    – >或者将AndroidManifest.xml中的package属性更改为<manifest xmlns:android="..." package="com.example.android" ...> ,如果合适的话
  • 使用的R ID来自系统资源
    – >不要导入android.R ,但用android.前缀违规id android. 例如android.R.layout.simple_list_item_2
    你可以导入android.R而不是前缀的ID,但是你不能再导入应用程序R类,并且必须在应用程序的id前面,例如com.example.android.R.id.main_menu

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

如果资源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类!

你有没有在你的文件中导入正确的R类?

 import android.R; 

代替

 import com.example.R; 

似乎是很多人的问题。 清理完成后,我的class级有时会input错误的。

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

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

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

如果您在android studio中开发并重构了包名,那么您应该在android清单和应用程序gradle文件中更改包名称。

  applicationId "change here your package name" 

并在清单文件中

  package="change here your package name" 

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

  • 在IntelliJ中,select工具> Android>生成<project>的源代码
  • (如果你知道另一个IDE的方式,请随时编辑这个答案!)

我想它曾经工作,但现在不..

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

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

如果你想改变包名称

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

删除导入android.R; 从所有的文件..一旦清理项目,并build立项目….它会产生

在我的情况下,我意识到我在项目中创build了多个包。 在Android清单中,我发现提供程序名称不正确地保存了MyContentProvider的值而不是.provider.MyContentProvider。 我的主要包(用户界面)是co.companyname.database.provider而不是co.companyname.database。

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

另一个项目是在一个类中,我正在使用toString()。length()来计算一个string,但将它们交换为TextUtils.IsEmpty(stringVal); 我想不出任何其他解决问题的方法。

希望这有助于某人。

NB – 所有这一切都与AS 0.8.6

PS

R.java是自动生成的,所以读取头文件:/ * AUTO-GENERATED FILE。 不要修改。 * *这个类是由* aapt工具从它find的资源数据自动生成的。 它*不应该被手动修改。 * /

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

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

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

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

你将什么文件导入到获取R错误的文件中?

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

你使用Eclipse来build立这个项目? 在更新Eclipse之前,较老的项目是否得到这些错误? 什么是引起错误的参考?

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

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

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

如果发生这种情况,最糟糕的情况是您可能需要备份文件,删除项目,然后拖动文件并重新编译。 希望它不会来,但这将是你的核select。

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

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

检查AndroidManifest.xml – > manifest包标签。

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

同步,清理,然后用Gradle重build。

永远不要build立你自己的R文件。 R是从你的源代码文件自动生成的,并且可以build立设置。

我有:“错误:包R不存在”,并假定javac没有访问R.java。
所以我将%PROJ_LOC%\ gen附加到sourcepath,并且工作正常! SOURCEPATH =%PROJ_LOC%\ SRC;%PROJ_LOC%\根

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

你可以试试

Android Studio顶部菜单>文件>无效的caching/重新启动…

点击无效caching/重启button重新启动您的项目

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

然后重build你的项目

希望能帮助到你

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

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

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

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

我解决了我的问题:

软件包R不存在

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