我得到了可怕的包R
不存在,它正在杀了我。
代码很好我在市场上运行代码的应用程序。
现在它正在影响简单的webview
应用程序。 o.0
R.string.app_name
错误,我的main.xml
和string.xml
没问题。我很困惑。
我为"borrow"
某些代码打开了旧版本,但是它充斥着R. errors.
我做了一个干净而没有任何改变,除了在顶部添加了导入R.android
。
我甚至加载到Netbeans中,我得到同样的东西。清洁不起作用。我可以自己编写R.java
文件吗?
这R
是什么东西?不是R
。应该对应R.java
答案 0 :(得分:118)
对于遇到此问题的人, 我通过重命名命名空间文件夹重构。我只是忘了编辑AndroidManifest,这就是我收到此错误的原因。
请务必检查此内容。
答案 1 :(得分:76)
import your.app.package.R;
当然,用您的应用包替换your.app.package
。
在使用R资源引用的所有类中,删除包含import
的任何其他.R
,即import android.R;
答案 2 :(得分:43)
TL; DR ,如果您收到错误“包R不存在”,可能的原因是
R
套餐不同(请参阅package
AndroidManifest.xml中的属性)R
类,例如import com.example.android.R;
package com.example.android;
<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/
下面的包子目录中生成并编译。
R
包中还有另一个android
类。此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();
}
}
答案 3 :(得分:21)
永远不要尝试自己写R课程。
您是否在文件中导入了正确的R类?
否则
import android.R;
而不是
import com.example.R;
似乎是很多人的问题。在清理和建造之后,我的课程有时导入错误的课程。
答案 4 :(得分:12)
如果你在android studio中开发并重构了包名,那么你应该在android manifest和app gradle文件中更改包名。
applicationId "change here your package name"
并在清单文件中
package="change here your package name"
答案 5 :(得分:9)
R.java是一个自动生成的文件,如果你在xml文件中有错误,它通常不会被编译。
否您无法编写自己的R.java文件,它必须由资源编译器生成。
检查所有xml文件中的错误。
答案 6 :(得分:6)
The R class是从您的XML文件(UI布局,国际化字符串等)自动生成的Java代码。如果以前的代码(看起来像是),您需要告诉您的IDE以某种方式重新生成这些文件:
答案 7 :(得分:4)
我认为它曾经有效,但现在它没有......
如果您更改MANIFEST文件中的PACKAGE名称
,就会发生这种情况<manifest
package="com.example.android...."
如果您想更改包名称
答案 8 :(得分:3)
在使用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=
属性,并且如果您在{上使用custom_package
{1}}或android_library
,请确保其拼写正确。
答案 9 :(得分:2)
在我的情况下,我意识到我在项目中创建了多个包。在Android Manifest中,我发现提供程序名称错误地保存了MyContentProvider的值,而不是.provider.MyContentProvider。我的主程序包(使用UI)是co.companyname.database.provider而不是co.companyname.database。
然后在受影响的类的import语句中,我只需右键单击并询问Android Studio(0.8.6)以优化我的import语句。我还注意到,如果您在IDE右上角的AS搜索栏中搜索.R,您可以找到自动生成的R.java文件,该文件是您的软件包的一部分。此时您无需进行任何更改。在更正Android Manifest文件并重建之后,Studio应该修复项目。
另一个项是在一个类中,我正在使用toString()。length()来计算字符串但是将它们交换为TextUtils.IsEmpty(stringVal);想不出我为解决这个问题所做的其他事情。
希望这有助于某人。
NB - 所有这些都是AS 0.8.6
P.S。
R.java是自动生成的,因此请阅读标题: / *自动生成的文件。不要修改。 * *这个类是由自动生成的 *从它找到的资源数据中获取工具。它 *不应手动修改。 * /
答案 10 :(得分:2)
当我遇到这种情况时,我创建了一个新项目,并将旧项目中的文件复制到新项目中。
但是,我仍然遇到同样的问题:R does not exist
。然后我意识到我已经将Manifest从我的记事本中复制并粘贴到Android Studio清单中,并且我没有更改清单文件中的包名称。
因此,一旦我将清单中的包名称更改为新项目名称,我创建的新项目就可以正常工作。
答案 11 :(得分:2)
删除导入android.R;从所有文件..一旦清理项目并构建项目....它将生成
答案 12 :(得分:2)
示例:我的软件包是 com.example.mypc.f01 ,以修复您在下面添加以下行的错误:
<强> import com.example.mypc.f01.R;
强>
答案 13 :(得分:1)
在子包中使用 R 时可能会发生这种情况 示例:
com.example; // -app package 和 main Resources 映射到 app package
com.example.order; // - 子包
在子包中,如果你需要访问一个资源,如,
R.Layout.orderLayout - 这里 R 将不可用。
要解决这个问题,您需要从主包中导入 R。 IE。 对于 com.example.order 文件夹/包中的文件,您将导入
包com.example.order 导入 com.example.R;
答案 14 :(得分:1)
您导入哪些文件导致R错误?
我对R文件的理解是它们是自动为Android应用程序中的所有属性生成的参考列表。因此,您无法自行更改。
您是否使用Eclipse构建此项目? 在更新Eclipse之前,较旧的项目是否会出现这些错误? 获得错误的参考是什么?
检查以确保您没有从其他应用中的其他复制代码导入另一个R文件。
答案 15 :(得分:1)
每次切换计算机并尝试从通过USB传输的文件中导入旧项目时,我都会遇到此问题。
我的解决方法是创建一个新项目并将文件复制(拖动)到IDE(当前使用Netbeans)并重建。这是一个烦恼和一些hacky解决方案,但它解决了这个问题。
如果您遇到这种情况,最糟糕的情况是您可能需要备份文件,删除项目,然后将文件拖到那里并重新编译。希望它不会那样,但那将是你的核选择。
答案 16 :(得分:1)
您可以尝试
Android Studio顶级菜单&gt;文件&gt;无效缓存/重启...
单击invalidate cache / restart按钮以重新启动项目
如果某些片段类R类没有正确解析,则再次解析R.xxxx.xxx
然后重建你的项目
希望有所帮助
答案 17 :(得分:1)
以下是一些可用于消除此错误的技术:-
答案 18 :(得分:0)
此错误是 100% 由于 xml 文件中的错误。您可以在 Logcat->error 中检查该特定错误。然后解决这个问题。如果 xml 错误得到解决,应用程序将运行。当您从其他来源复制代码时,通常会出现这种情况。在我的情况下,xml 文件中的 Button 中存在错误。我没有正确输入 Button 。如果您解决了该错误,您和您的应用程序就会顺利运行。如果仍然显示此错误,请不要担心并继续前进。
答案 19 :(得分:0)
下面为我工作。
如果第一步无效,请尝试第二步。
答案 20 :(得分:0)
我忘记在Java类的顶部添加“包”的“名称”。检查是否确实添加了您的。
答案 21 :(得分:0)
R。破坏的另一种情况是注释处理。
某些处理可能会引用位于某些文件夹或文件夹级别的类。如果将所需的类移动到其他位置,则可以将 R。作为未知类。
不幸的是,在Android Studio中,此问题的错误指针并不明显。
答案 22 :(得分:0)
错误的路径:项目“兑现”指向图像的指针,如果您对路径进行了名称更改,例如重构的包或文件夹。然后只需再次编写R字母,编辑就会建议正确的路径并且它会起作用。在这种情况下,您的文件名是正确的,并且R指针中引用的内容存在,但路径错误,因此清理和构建将不起作用。
答案 23 :(得分:0)
有时,当您将项目重新导入Android Studio时,它会得到解决。
答案 24 :(得分:0)
刚刚摆脱了我项目中的错误。我已经导入了一个示例项目,我已经更改了包文件夹但是我没有更新其中一个java文件中的包。
最有可能导致此错误&#39;包R不存在&#39;是Java或清单文件中的包名称不正确。确保它是正确的并且同步,然后进行干净的构建。
答案 25 :(得分:0)
如果在解决合并冲突后出现此错误,则简单构建 - &gt;清洁项目可以提供帮助
答案 26 :(得分:0)
我有:“错误:包R不存在”并假设javac 无法访问R.java 所以我将%PROJ_LOC%\ gen附加到sourcepath,它工作正常! SOURCEPATH =%PROJ_LOC%\ SRC;%PROJ_LOC%\根
我没有使用Android Studio或Ant(或XML)。
答案 27 :(得分:0)
如果您在Android Studio中遇到此错误:
检查Gradle模块文件 - &gt; defaultConfig - &gt; applicationId设置。
检查AndroidManifest.xml - &gt;清单包标签。
检查所有src java文件中的包声明。
同步,清洁然后用Gradle重建。
永远不要构建自己的R文件。 R是从源java文件和构建设置自动生成的。
答案 28 :(得分:-1)
自己编写R.java没有好处,因为它在每次构建时都会被更改,
请记住使用 R.something例如:R.raw.filename 来自内部类,其包值类似于AndroidManifest.xml中的包值
因为为当前应用程序或库定义了R. resources ID 并且如果在编译时存在它们都被检查,所以没有意义 允许他们从&#34;代码&#34;它不针对当前的应用程序或库,可以在其他地方使用。
答案 29 :(得分:-2)
我解决了我的问题:
包R不存在
转到AndroidManifest.xml
个文件,并将minSDKVersion="17"
从19改为