Android – 如何重新生成R类?
可能重复:
在Eclipse中为Android开发:R.java不生成
我已经导入了一个项目到我的Eclipse IDE,但它给我一个错误,因为R文件不是自动生成的。
如何编辑R文件,使其符合我的项目要求?
在另一个堆栈溢出问题中 ,有人回答说:你必须摆脱xml文件中的警告和错误(语法和链接)。 这加上干净/build立项目。
项目 – >清理,然后select生成项目的选项。
我发现这种情况发生在一个破碎的布局上,一切都炸了。 放松一下,当你第一次学习编程时忘记了一个分号就会产生一百个错误。 许多恐慌,按下所有的button,使事情变得更糟。
解
- 确保
R.
链接的内容不被破坏。 如果中断,ADK可能无法重新生成R. 修复XML文件中的所有错误 。 - 如果你以某种方式碰到东西,并在你的活动中创build了
import android.R
, 请将其删除 。 - 运行项目 – >清理 。 这将删除并重新生成R和BuildConfig。
- 确保Project – > Build Automatically被打勾。
- 等待几秒钟,错误消失。
- 如果不起作用,请删除/ gen /文件夹中的所有内容
- 如果仍然不起作用,请尝试右键单击您的项目 – > Android工具 – >修复项目属性 。
如果R不能再生,该怎么办
这通常发生在你有一个破损的XML文件。
- 检查XML文件中的错误,主要在/ res /文件夹中
- 常见的地方是/ layout /和/ values /特别是如果你最近改变了其中的一个
- 检查AndroidManifest.xml,我发现经常更改一个string,忘记更改AndroidManifest.xml中的string名称。
- 如果你找不到问题。 右键单击/ gen / – >从本地历史恢复… – >打勾R.java – >单击还原 。 这并不能解决问题,但它会清除额外的错误,使问题更容易find。
我知道这里已经有很多答案,但是这是Google上的第一个链接,所以我在这里编译所有的build议,并希望它帮助其他新的人:)
好的,我解决了它:
当我更改清单到目标1.5版本时,出现了百万个错误,只有一个与R类的不存在有关 – 在清单文件属性“targetSdkVersion”和“maxSdkVersion”在sdk 1.5中不存在
因为这个R级不能生成。
我有一个类似的问题,在添加了一些图标和布局文件后,没有重新生成R.java文件。 我尝试清理和重build,而且自从原来的R.java文件不存在之后,情况变得更糟了,而且还没有重新生成。 最终,我发现生成R.java的编译器一定有编译器错误,我们没有在控制台中显示这些错误。 幸运的是,我之前已经注意到了
- 如果一个.xml文件引用另一个不存在的文件,那么这是错误的
- 在文件名中有大写字母是错误的(为什么是禁止的,我爱骆驼的情况)。
无论如何,在将我的图标和.xml文件重命名为全部小写,然后修复.xml文件中的所有引用后,瞧,R.java被重新生成。 当我停下来吃午饭的时候,正好及时感觉良好:-)
要再次生成R文件:
- 在layout-> activity_main.xml中修改一些东西
- 保存文件
- 项目 – >清除…
只要删除位于gen目录中的R文件,然后尝试Project-> Clean。 然后再次构build您的应用程序
你也可以右键点击project -> Android Tools -> Fix Project Properties
。 这应该导致R.java类被重新生成。
我的问题是在最Manifiest文件。 我删除了启动器图标,并没有引用Manifiest上的新的:)
我重新打开日食,编辑我的一个XML文件,然后发现我的激活类是引用android.R而不是我的包“R”:-)
为了重新生成R.class,你将不得不尝试多种技术。
- 从你的Java源文件中删除任何R
import R.android
:import R.android
- 确保通过转到窗口 – >显示视图 – >问题来打开“问题”面板
- 如果您在xml资源中确实有一些错误,则需要更正这些错误。 在我的情况下,我不得不改变我的ID属性,包括“+”标志如下:
android:id="@+id/grp_txt"
- 现在继续执行Project-> Clean
- 最后做Project-> Close,Project-> Open
“+”号表示新的资源ID,并强制aapt工具在R.java类中创build一个新的资源整数。
如果您使用Intellij IDEA,则可以单击Build – Rebuild Project
如果你通过“项目清理”(不要这样做)在eclipse中意外地删除了你的R,右击你的Projectfile – >从本地历史恢复…
重新创build您的R
我的情况:
- 破xml导致了R.中的bug(因为ä,ö,ü,id中的字母)
- 干净的项目删除我的R.
我做了什么:
- 从本地历史重新创buildR.
- 检查我的类(如导入android.R)中错误的R导入并将其删除
- 修复该XML文件,并将其内容保存在外部txt文件
- 完全从我的项目中删除了XML。
- 一次运行我的项目
- 把这个固定的xml放回原处
和…
- 吓坏了,像绿巨人一样没有理由地给了我的女朋友一个大大的拥抱。
我的问题是我的XML文件中的错误。 在Android通用XML编辑器或Android通用清单编辑器中并不总是会自动检测错误,所以请尝试使用常规文本编辑器。 例如,某个.java文件中的一些随机乱码已经被插入到我的manifest和strings.xml文件中。
右键单击任何XML文件(很可能在/ res文件夹或AndroidManifest.xml中),然后单击“打开方式”,然后select“文本编辑器”。 确保一切看起来不错,然后保存。 此外,请确保为您的项目启用“自动构build”。 我删除了我的R.java文件,并从头开始重build,所以不需要从本地历史logging中恢复。
尝试添加一个新的“Android XML文件”,例如/res/layout
文件夹。 这可能会导致插件重新生成R
类。
您可以修改/ res文件夹中的任何xml文件,甚至只需添加一个空格并保存即可重新生成。
我有同样的问题 – “R”缺失。 而这里给出的build议都没有帮助。 幸运的是,我find了原因 – 不知何故,Eclipse丢失了Project-Properties-target。 它没有设置。 到目前为止,我还不知道做了什么,但是让它恢复正常。 所以,注意力缺失R也可能意味着失踪的目标 !
我已经尝试了上面的所有解决scheme。 但不幸的是,这并没有解决我的问题。 只要我把一张新照片粘贴到我的可绘制文件夹,我的R.java就消失了。 阅读这个问题的答案后,我试图删除我以前粘贴的图标(而build立自动启用),一切都很好。 希望这会帮助别人!
我有这个问题,我只是右键单击我的项目和生成项目的数据包。 R类即刻出现在包gen中。
如果其他人发现这个线程时谷歌search,就像我做的那样:
我有一段时间似乎是相同的问题,经过一番挖掘,我注意到R.java文件正确构build,但只有一个我的源文件被忽略。 这个特定文件的问题在于Eclipse“有帮助地”在顶部添加了以下行:
import android.R;
这有效地隐藏了项目R的东西。 只要删除它,一切都会好起来的…
您可以使用Eclipse的“从本地历史恢复”来恢复您的旧R文件,如果它已被删除。 之后,你可能会看到什么让Eclipsebuild立你的文件(我看过其他错误比以前真的有助于解决问题)。
可能是你可以去项目属性并selectAndroid选项,然后定义项目的目标。 一旦你为这个项目应用选定的目标API,它将自动生成R.java。
主要是一个无效的布局文件的问题。 打开“问题”视图,查找XML布局文件中的错误。 修复它们,R类将被重新创build。
在我的情况下,并没有真正的错误。 问题视图在xml布局中显示错误。 编辑器也显示了xml错误。 只需使用“ctrl-f”自动格式化器重新格式化xml,就可以修复“xml”错误,并重新创buildR类。
你可以从你的项目中删除R.java文件,它会重新生成,假设你已经自动启用了构build。 如果你没有自动启用构build,只需转到project-> build all
对我来说,这是一个string值资源没有被定义…我手动添加到Strings.xml后,R类自动重新生成!
从现有项目导入时,通常会发生此问题。 尝试从res文件夹中的所有.xml文件以及Manifest文件中修复所有错误。 这些错误很可能以“ match_parent ”参数显示,请将其更改为“ fill_parent ”。 当所有的错误都清楚了,R.java就会出现。
如果任何.xml文件没有错误。 尝试编辑任何XML文件(如删除一个字母,然后键入),然后保存该文件,这将导致生成R.java。
我有一个问题, findViewById(R.id.edit_text)
但返回一个TextView不是一个EditText。 我认为问题是R.id类有错误的ID号,然后,我清理项目,那么它的工作正常。
在我的情况下,这是一个不正确的名称的XML文件,导致我的R文件不重build。 这没有显示在包资源pipe理器中,但它显示在LogCat中。 注意那里有关你的res文件的任何警告。 无论你多less次清理你的项目,R文件将不会重build,直到这些错误被照顾。