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

Ale*_*ovs 307 eclipse android r.java-file

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

我正在使用Windows 7.

从其中一条评论:"做项目 - > 清理是导致问题的原因.清理删除R.java ......无论出于何种原因,插件都没有重新生成文件."

Muz*_*Muz 300

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

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

如果R不再生,该怎么办

当您的XML文件损坏时,通常会发生这种情况.

  • 检查XML文件中的错误,主要是在/res/文件夹中
  • 常见的地方是/layout//values/,特别是如果你最近改变了他们的一个
  • 检查AndroidManifest.xml.我发现经常更改字符串并忘记更改字符串名称AndroidManifest.xml.
  • 检查Android SDK Build-tools是否已安装.窗口 - > Android SDK Manager - >工具 - > Android SDK Build-tools
  • 确保在更新时Android SDK Tools,还要更新Android SDK Platform-toolsAndroid ADK Build-tools.如果它们不匹配,则构建将无提示失败.
  • 如果找不到问题,请右键单击/ gen/ - >从本地历史记录恢复... - >勾选R.java - >单击恢复.即使它没有解决问题,它也会清除额外的错误,使问题更容易找到.

  • 这应该是最好的答案! (21认同)
  • Window-> Android SDK Manager-> Tools-> Android SDK Build-tools这是我的解决方案,upvoted (11认同)
  • 实际上,它让我意识到我的环境仍需要更新工具. (6认同)
  • 删除`import android.R;`对我有用. (2认同)

aio*_*obe 177

本网站建议:

如果你在项目上运行clean,它应该重新生成所有生成的Java文件,即R.

...和...

在Eclipse中,在"项目"菜单下,是一个自动构建选项.这将有助于您在每次修改时构建R.java文件."清洁..."选项也在"项目"下.

该网站建议另一种解决方案

  • 做项目 - >清洁并不总能解决问题. (217认同)
  • 做项目 - >清洁是导致我的问题的原因.清理会删除R.java ...并且无论出于何种原因,插件都不会重新生成文件. (101认同)
  • 如果res目录中有一些错误,R.java不会重新生成.删除了错误 - >在我的情况下解决了问题:) (96认同)
  • 当我链接到需要不同于我安装的Android支持API版本的库时,我弹出了这个.依赖关系不起作用,之后我的R没有生成.正如其他人所说,它出现在错误日志中,所以检查一下. (7认同)

小智 40

我遇到过同样的问题.当我检查出来时,我发现布局下的XML资源名称没有正确的命名约定.它有一些大写字母.因此我将其重命名为使所有字母都小写,并且魔术起作用.

  • tnx ...傻傻的我以为我可以在布局名称中使用大写字母 (2认同)

小智 28

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


mas*_*asi 17

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

如果由于某种原因, dos 不起作用:确保 layout.xml文件不包含错误.Eclipse似乎有点儿错误:有时它不标记XML中的错误,也不标记包浏览器.在这种情况下:使用"干净"后查看"控制台"或"问题"视图.应该在那里显示所有错误.修复它们并重做干净.

注意:由于缺少R文件,无需修复您获得的错误!只需修复XML文件和其他项目错误并使用干净!


小智 10

快速解决:

清单中的包名称需要与/src文件夹中的包名称相同,/gen文件夹包将自动复制.

详细观察:

观察/gen文件夹中的包名称.在我的情况下,它与/src文件夹中的不同.

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

我试图将一个包含/src文件夹名称的包添加到/gen文件夹中,看看会发生什么,但这并没有解决问题.然后我继续删除与/src文件夹的包名称不同的包名称./src我删除它后立即重新创建名称与该文件夹不对应的包.

由于清单中的包引用对应于无意义地重新创建并且与/src文件夹中的包不对应的那个,因此提示重命名package = "oldPackage"package = "srcFolderPackage".


小智 9

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

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

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


Mr.*_*dia 9

Android已在SDK构建工具ADT 22中添加了构建机制.您只需执行以下步骤即可.

  1. 更新Android SDK工具
  2. 更新Android SDK平台工具
  3. 更新Android SDK构建工具
  4. 将构建工具的路径添加到路径变量中.(路径最多----你的目录-PATH\android-sdk\build-tools)

这将解决问题.


小智 8

如果没有生成R.java,其中一个解决方案是删除名为"blabla.out.xml"的布局文件.

删除此文件后,尝试从菜单项目 - > 清洁中清除项目.


JnB*_*ymn 7

作为Glaux答案的概括,如果目录中有任何错误res,则R.java可能无法生成 - 即使您清理并重建.首先解决这些错误.

例如:当您添加一个像"myimage-2.jpg"的图像文件时,系统会将此视为错误,因为文件名仅限于字母数字值.添加任何文件后,在"res"目录上刷新,并在控制台窗口中查看输出是否存在任何文件名警告.


Nev*_*hen 6

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

  1. 安装或升级ia32-lib:

    sudo apt-get upgrade ia32-libs
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查您是否拥有aapt文件夹的正确权限:

    cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
    chmod 777 aapt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 启动Eclipse:

    sudo eclipse
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在Eclipse中运行Project - > Clean


Erd*_* Ay 6

您100%在XML文件中有错误,但XML验证不会向您显示错误.这就是您需要首先检查XML文件的原因!


gos*_*eib 5

查看Eclipse 中的Problems选项卡总是有帮助的.在我的情况下,我得到一个" android无法解决目标'android-8' "错误消息,导致R.java无法生成.所以,我将导入的目标更正为我在default.properties文件中使用的目标,然后我通过Projects-> Clean执行了清理,瞧!R.java是自动生成的!希望能帮助到你!