首页 文章

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

提问于
浏览
299

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

我正在使用Windows 7 .

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

30 回答

  • 2

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

  • 1

    我有这个问题 . 不小心我删除了这个

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

    这开始在我的XML文件以及我的Java文件中导致整个项目的构建错误 . 一旦我重新输入我删除的内容,它再次起作用:)

  • 4

    This site建议:

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

    ...和...

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

    This site建议另一种解决方案 .

  • 4

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

    解决方案

    • 确保 R. 链接到的任何内容都没有损坏 . Fix all errors in your XML files . 如果ADK中的任何内容被破坏, R 将无法重新生成 .

    • 如果你以某种方式击中某些东西并在你的活动中创建 import android.Rremove it .

    • 运行 Project -> Clean . 这将删除并重新生成R和BuildConfig .

    • 确保勾选 Project -> Build Automatically . 如果没有,请通过 Menu -> Project -> Build Project 手动构建它 .

    • Wait 几秒钟的错误就消失了 .

    • 如果不起作用,请删除/ gen /文件夹中的所有内容

    • 如果仍然无效,请尝试 right-clicking your project -> Android Tools -> Fix Project Properties .

    • 检查您的 *.properties 文件(在您的应用程序文件夹的根文件夹中),并确保其中的链接没有损坏 .

    • 右键单击 project > properties > Android . 查看页面右侧的Project Build Target和Library部分 . 您的Build Target应该与AndroidManifest.xml中的目标匹配 . 所以,如果它是绿色的蜱虫 . 如果您移动了一些文件和文件夹,则可能会发生这种情况 .

    如果R不重新生成该怎么办

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

    • 检查XML文件中的错误,主要是在 /res/ 文件夹中

    • 常见的地方是 /layout//values/ ,特别是如果你最近改变了其中一个

    • 检查 AndroidManifest.xml . 我发现经常更改字符串并忘记更改 AndroidManifest.xml 中的字符串名称 .

    • 检查是否已安装 Android SDK Build-tools . Window -> Android SDK Manager -> Tools -> Android SDK Build-tools

    • 确保在更新 Android SDK Tools 时,还要更新 Android SDK Platform-toolsAndroid ADK Build-tools . 如果它们不匹配,则构建将无提示失败 .

    • 如果找不到问题, right click /gen/ -> Restore from local history... -> tick R.java -> click Restore . 即使它没有解决问题,它也会清除额外的错误,使问题更容易找到 .

  • 3

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

  • 4

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

    If for some reason that dosn't work: 确保您的layout.xml文件没有标记XML和包浏览器中的错误 . 在这种情况下:使用"clean"后查看"console"或"problems"视图 . 应该在那里显示所有错误 . 修复它们并重做干净 .

    NOTE: It is NOT neccessary to fix the errors you get because of a missing R file! 只需修复XML文件和其他项目错误并使用干净!

  • 2

    快速修复:

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

    详细观察:

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

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

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

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

  • 300

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

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

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

  • 1

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

    • 更新Android SDK工具

    • 更新Android SDK平台工具

    • 更新Android SDK构建工具

    • 将构建工具的路径添加到路径变量中 . (路径最多----你的目录-PATH \ android-sdk \ build-tools)

    这将解决问题 .

  • 9

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

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

  • 6

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

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

  • 2

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

    • 安装或升级ia32-lib:
    sudo apt-get upgrade ia32-libs
    
    • 检查您是否拥有aapt文件夹的正确权限:
    cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
    chmod 777 aapt
    
    • 启动Eclipse:
    sudo eclipse
    
    • 运行项目 - >在Eclipse中清理
  • 1

    You 100% have an error in an XML-file ,但XML验证没有显示错误 . 这就是您需要首先检查XML文件的原因!

  • 3

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

  • 1

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

  • 1

    确保您没有导入

    android.R;

  • 6

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

    您可以在Eclipse控制台日志窗口中看到一些错误,即"Resource entry icon is already defined." . 删除icon.html后,您可以清除或只删除 gen 文件夹 . 您会发现R.java已创建 .

  • 174

    我发现 res 文件夹中包含大写字母的任何文件都会产生此错误 . 这件事发生在我身上,我添加了一个PNG文件并忘了 .

  • 28

    在阅读了很多帖子和YouTube视频后,我发现由于各种原因,我们每个人都缺失了 R.java .

    这是我在Eclipse中修复它的方法:

    • gen 文件夹 manually 中创建R.java并保存 .

    • 之后转到Project并单击"Clean"

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

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

  • 9

    对我来说,我已经连接了两次v7 appcompat . 无论如何,在Eclipse中,右键单击Package Explorer或Navigator中的项目名称,转到Properties,Android,并取消选中Library部分中的任何重复项 . 您可能需要构建 - >之后清理 .

  • 8

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

    在(尝试)一支球队之后,我已经消失了 R.java 同步,项目中有冲突解决文件(即 thingy.xml.minethingy.xml.r35 等) . 删除它们/解决重新生成的冲突 R .

  • 40

    好的,很明显这个问题可能有很多原因 . 如果您使用的是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 not found

  • 1

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

    如果没有导入,则返回的资源是默认资源,不包括我自己的资源 .

    有了这个说,如果你发现你只获得了一个默认资源列表,那么只需检查以确保你导入的是application_package_name.R而不是android.R .

  • 10

    我的问题是 appcompat 与我的项目不在同一目录中 .

    我用Ant编译我的应用时发现了这一点 .

  • 7

    还要确保您拥有最新版本的ADT插件,并打开Android SDK管理器以将所有SDK工具更新到最新版本 . 检查Eclipse本身的更新 . 不匹配的版本给我带来了问题 .

  • 2

    我的问题是在菜单文件中 . 如果菜单文件中引用了 strings.xml 中不存在的字符串,编译器似乎不会发出警告 . 检查菜单XML文件中的 item 是否引用了 strings.xml 中不存在的任何字符串 . 通常在 android:title .

  • 4

    对我来说,当我尝试复制现有的 res/menu 而不是使用 wizard 创建一个时,会导致此错误 .

  • 17

    如果您使用Maven,所有这些答案都无法解决 . 我的解决方案是添加

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

    到android-maven-plugin的配置部分 .

  • 2

    我找到了一个解决方案,为什么R.class在再次制作后不是由Eclipse制作的 - 2清理,构建等等 .

    问题出在strings.xml中:

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

    默认情况下,这些是在创建项目时由Eclipse创建的 .

    当然,您正在根据自己的要求更改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通信 .

  • 5

    我更改了我的布局XML文件名,后来发现XML文件(在这种情况下是小部件提供程序)仍然引用了不存在的旧布局XML,这阻止了R类的自动生成/更正 .

相关问题