在Eclipse中为Android开发:R.java不重新生成

我发现我的R.java从不更新,因此它不包含有关我的新资源的信息,所以我决定删除它,并认为Eclipse会生成一个新的资源。 但是这没有发生,我现在没有R.java。 我怎样才能再生一个?

我正在使用Windows 7。

从其中一个评论:“做项目 – > 清洁是什么导致了我的问题。清洗删除R.java …并由于某种原因插件不重新生成的文件。

本网站build议:

如果你运行一个干净的项目,它应该重新生成所有生成的Java文件,即R.

…和…

在Eclipse中,在“项目”菜单下,是一个自动生成的选项。 这将帮助您每次修改时都生成R.java文件。 Clean …选项也在Project下。

这个网站提出了另一个解

我发现这种情况发生在一个破碎的布局上,一切都炸了。 放松一下,就像你第一次学习C编程时的那个错误,你忘记了一个分号,就会产生一百个错误。 许多恐慌,按下所有的button,使事情变得更糟。

  • 确保R.链接的内容不被破坏。 修复您的XML文件中的所有错误 。 如果ADK中的任何内容被破坏, R将不会再生。
  • 如果你以某种方式碰到东西,并在你的活动中创build了import android.R请将其删除
  • 运行项目 – >清理 。 这将删除并重新生成R和BuildConfig。
  • 确保Project – > Build Automatically被打勾。 如果没有,则通过Menu -> Project -> Build Project手动Menu -> Project -> Build Project
  • 等待几秒钟,错误消失。
  • 如果不起作用,请删除/ gen /文件夹中的所有内容
  • 如果仍然不起作用,请尝试右键单击您的项目 – > Android工具 – >修复项目属性
  • 检查你的* .properties文件(在你的应用程序文件夹的根文件夹中),并确保其中的链接没有损坏。
  • 右键单击您的项目>属性> Android 。 查看页面右侧的Project Build Target和Library部分。 您的构build目标应该与AndroidManifest.xml中的目标匹配。 所以如果它在AndroidManifest中被设置为17,那么确保Target Name是Android 4.2。 如果你的图书馆在参考下有一个X,删除并重新添加图书馆,直到有一个绿色的勾号。 如果您移动了一些文件和文件夹,可能会发生这种情况。

如果R不能再生,该怎么办

这通常发生在你有一个破损的XML文件。

  • 检查XML文件中的错误,主要在/res/文件夹中
  • 常见的地方是/layout//values/ ,特别是如果你最近改变了其中的一个
  • 检查AndroidManifest.xml 。 我发现我经常更改一个string,并忘记从AndroidManifest.xml更改string名称。
  • 检查是否安装了Android SDK Build-tools窗口 – > Android SDKpipe理器 – >工具 – > Android SDK构build工具
  • 确保在更新Android SDK Tools ,还要更新Android SDK Platform-toolsAndroid ADK Build-tools 。 如果它们不匹配,构build会失败。
  • 如果找不到问题,请右键单击/ gen / – >从本地历史logging恢复… – >打勾R.java – >单击还原 。 即使不解决问题,也会清除额外的错误,使问题更容易find。

我遇到过同样的问题。 当我检查出来,我发现布局下的XML资源的名称没有正确的命名约定。 它有一些大写字母。 所以我重新命名了它,使所有的字母小写和魔法工作。

R.class突然失踪的一个原因是XML文件中存在错误。 例如,当你在myCoolLayout.xml这样的名字中添加一个大写字母的XML文件,这个名字是不允许的。 或者当你有引用不指向现有的文件等

在Eclipse中,只需使用Project – > clean来清理项目。 R.java将被自动(重新)创build。

如果由于某种原因无法正常工作: 请确保您的layout.xml文件不包含错误。 Eclipse在这里似乎有点儿错误:有时它不标记XML或者包浏览器中的错误。 在这种情况下:使用“清洁”后,看看“控制台”或“问题”的看法。 所有的错误应该显示在那里。 修复它们,并重做一个干净的。

注意:修复由于丢失的R文件而导致的错误并不是必要的! 只需修复XML文件和其他项目错误,并使用干净!

快速解决:

清单中的包名称必须与/src文件夹中的包名称相同, /gen文件夹包将自动复制。

详细观察:

观察/gen文件夹中的软件包名称。 在我的情况下,它是不同于/src文件夹中的。

清单中引用的包是/gen文件夹的包。

我试图添加一个名为/src文件夹的包到/gen文件夹,看看会发生什么,但是这并没有解决问题。 然后我继续删除与/src文件夹的软件包名称不同的软件包名称。 这个名称不对应于/src文件夹的软件包,只要我删除它就重新创build。

由于清单中的软件包引用对应于正在被无意中重新创build并且与/src文件夹中的软件包不对应的软件包引用,因此系统会提示用package = "oldPackage"重命名package = "srcFolderPackage"

我有同样的问题,我终于find了问题:在strings.xml中,我没有保留当创build一个新的Android时默认存在的行<string name="app_name">program-name</string>项目。 我以为它只用于程序HelloWord,这是原始程序。

但是,AndroidManifest.xml引用了这个值,因此:

=>编译错误;
=> R.java没有更新;
=> ID无法识别…

Android已经在SDK构build工具ADT 22中添加了构build机制。 您只需要执行以下步骤。

  1. 更新Android SDK工具
  2. 更新Android SDK平台工具
  3. 更新Android SDK构build工具
  4. 将构build工具的path添加到pathvariables。 (path到—-您的DIRECTORY-PATH \ android-sdk \ build-tools)

这将解决这个问题。

如果您的R.java没有生成,其中一个解决scheme是删除名为“blabla.out.xml”的布局文件。

删除此文件后,尝试从菜单项目 – > 清理清理 项目

作为Glaux的答案的一个普遍性,如果你在res目录中有任何错误,R.java可能不会生成 – 即使你清理和重build。 首先解决这些错误。

举个例子:当你添加一个名为“myimage-2.jpg”的图片文件时,系统会认为这是一个错误,因为文件名仅限于字母数字值。 添加任何文件后,在“res”目录中执行刷新,并在控制台窗口中查看输出是否有任何文件名警告。

如果你的操作系统是Ubuntu,我可以提供一些build议:

  1. 安装或升级ia32-lib:

     sudo apt-get upgrade ia32-libs 
  2. 检查你是否有权限的aapt文件夹:

     cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2 chmod 777 aapt 
  3. 启动Eclipse:

     sudo eclipse 
  4. 在Eclipse中运行Project – > Clean

您100%在XML文件中有错误 ,但XMLvalidation不会显示错误。 这就是为什么你需要先检查你的XML文件的原因!

在Eclipse中查看问题标签总是很有帮助。 在我的情况下,我得到一个“ android无法解决目标'android-8' ”的错误消息,保持生成R.java。 所以,我将导入的目标更正为我在default.properties文件中使用的目标 ,然后通过Projects-> Clean和瞧!执行清理。 R.java是自动生成的! 希望它有帮助!

清理项目,closuresEclipse,重新打开并启动我的项目,最终使我的R.java重新出现…希望它有帮助

确保你没有import

android.R;

如果res文件夹中有任何错误,R.java永远不会生成。 例如,在可绘制的子文件夹中有两个同名的文件,一个是icon.png,另一个是icon.html。

您可以在Eclipse控制台日志窗口中看到一些错误:“资源input图标已被定义”。 删除icon.html后,您可以清理或删除gen文件夹。 你会发现R.java被创build。

我发现在res文件夹中有大写字母的 任何文件都会产生这个错误。 这发生在我加了一个PNG文件,我忘了。

在阅读了很多post和YouTubevideo之后,我发现我们每个人都有R.java因为不同的原因而失踪。

以下是我在Eclipse中修复这个问题的方法:

  • gen文件夹中手动创buildR.java并保存。
  • 之后,进入项目,然后单击“清理”

将显示以下消息,您的文件将自动被重写:

R.java被手动修改! 恢复到生成的版本!

对我来说,我已经连接了两次v7 appcompat。 无论如何,在Eclipse中,右键单击包资源pipe理器或导航器中的项目名称,转到属性,Android,并取消选中库部分中的任何重复项。 之后您可能需要Build – > Clean。

这显然没有一个最终的答案,但这里是另一个我没有看到这里已经:

(尝试)Team Synchronize之后, R.java消失了,项目中有冲突解决文件(即thingy.xml.minethingy.xml.r35等)。 删除它们/解决重新生成的冲突R

我有这个问题。 我偶然删除了这个

 xmlns:tools="http://schemas.android.com/tools" 

开始在我的XML文件以及我的Java文件中导致整个项目的构build错误。 只要我重新键入我删除了,它再次工作:)

好吧,很显然,这个问题可能有很多原因。 如果您使用的是64位的Linux机器,并且您只是第一次安装ADT,则可能会出现R不会自动生成的问题。 检查控制台选项卡,您可能会看到类似于以下的错误:

  'No such file or directory' while attempting to get adb version from '/home/patrick/code/android-sdks/platform-tools/adb' 

如果是这种情况,你需要安装ia32-libs,使用如下所示:

  sudo apt-get install ia32-libs 

详情请看这里: 找不到Android adb

我遇到了这个问题几次。 我发现,如果我没有通过我的应用程序的名称导入包R,例如,如果我的应用程序包名称为example.test,那么我发现我必须导入example.test.R才能访问任何资源。

如果没有导入,那么返回的资源就是我自己包含的默认资源。

有了这个说法,如果你发现你只是得到一个默认的资源列表,然后检查一下,确保你正在导入application_package_name.R而不是android.R。

我的问题是, appcompat不在我的项目相同的目录。

我用Ant编译我的应用程序时发现了这一点。

另外请确保您拥有最新版本的ADT插件,并打开Android SDKpipe理器将所有SDK工具更新到最新版本。 在Eclipse自己也检查更新。 不匹配的版本导致了我的问题。

我的问题是在一个菜单文件。 如果在菜单文件中引用strings.xml中不存在的string,编译器似乎不会提醒你。 检查你的菜单XML文件中的item是否引用你的strings.xml不存在的任何string。 通常在android:title

对于我来说,这个错误是因为我试图复制一个现有的res/menu而不是用wizard创build的。

如果您使用Maven,所有这些答案都无法工作。 我的解决scheme是补充

 <genDirectory>${project.basedir}/gen</genDirectory> 

到android-maven-plugin的configuration部分。

我find了一个解决scheme,为什么R.class不是由Eclipse制作完成后 – 2清理,构build等。

问题在strings.xml中:

 <string name="hello">Hello World, HelloAutoComplete!</string> <string name="app_name">HelloAutoComplete</string> 

这些在创build项目时默认由Eclipse创build。

当然,你正在改变strings.xml为自己的要求。 有时你清除你的代码中的这两行的string.xmls:

这是AndroidManifest.xml文件中的一个问题:

 <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloAutoComplete" android:label="@string/app_name"> 

所以它不能与strings.xml进行通信。

我改变了我的布局XML文件名,后来发现XML文件(在这种情况下的小部件提供者)仍然指的是旧的布局XML,它不存在,并且阻止了R类的自动生成/校正。