分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Peter Mortensen

在Eclipse中为Android开发:r.java不重新生成 - Developing for Android in Eclipse: R.java not regenerating

  •  302
  • Peter Mortensen  · 技术社区  · 6 天前

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

    我在用窗户。

    从其中一条评论:“做 项目 -gt; 干净的 是什么导致了我的问题。清除将删除r.java…无论出于什么原因,插件都不会重新生成文件。“

    64 回复  |  直到 3 周前
        1
  •  175
  •   aioobe    3 年前

    This site 建议:

    如果在项目上运行干净,则应该重新生成所有生成的Java文件,即R。

    …还有…

    在Eclipse中,在项目菜单下,是一个自动构建选项。 这将有助于您在每次修改时构建r.java文件 制造的。干净的…方案也在项目中。

    This site 建议另一个解决方案。

        2
  •  301
  •   Muz    3 年前

    我发现这件事发生在我身上,一个破碎的布局和一切爆炸。放松点,这就像你第一次学习编程C时犯的一个老错误,你忘记了一个分号,它会产生一百个错误。很多人惊慌失措,按下所有的按钮,事情变得更糟。

    解决方案

    • 确保任何 R. 到的链接未断开。 修复XML文件中的所有错误 . 如果广告里的东西坏了, R 不会再生。
    • 如果你以某种方式击中了某个东西并创造了 import android.R 在你的活动中, 移除它 .
    • 项目-清除 . 这将删除并重新生成r和buildconfig。
    • 确保 项目-自动生成 滴答作响。如果没有,请通过 Menu -> Project -> Build Project .
    • 等待 几秒钟后错误就消失了。
    • 如果不起作用,请删除/gen/文件夹中的所有内容
    • 如果它仍然不起作用,试试看 右键单击项目->Android工具->修复项目属性 .
    • 检查你的 *属性 文件(在应用文件夹的根文件夹中),并确保其中的链接没有断开。
    • 右键单击您的 项目属性Android . 查看页面右侧的项目构建目标和库部分。您的构建目标应该与androidmanifest.xml中的目标匹配。因此,如果它在AndroidManifest中设置为目标17,请确保目标名称是android 4.2。如果您的库在引用下有一个X,请删除并重新添加库,直到出现绿色勾号。如果移动了一些文件和文件夹,可能会发生这种情况。

    如果R不再生怎么办

    这通常发生在有一个损坏的XML文件时。

    • 检查XML文件中的错误,主要是在 /res/ 文件夹
    • 常见的地方是 /layout/ /values/ 尤其是最近你换了一个
    • 检查 AndroidManifest.xml . 我发现我经常更改字符串,忘记更改字符串名称 androidmanifest.xml文件 .
    • 检查一下 Android SDK Build-tools 已安装。 window->Android SDK管理器->工具->Android SDK构建工具
    • 确保在更新 Android SDK Tools ,您还可以更新 Android SDK Platform-tools Android ADK Build-tools . 如果它们不匹配,则构建会自动失败。
    • 如果你找不到问题, 右键单击/gen/->从本地历史记录还原…->勾选r.java->单击“还原” . 即使它不能解决问题,它也会清除额外的错误,使问题更容易找到。
        3
  •  40
  •   Michael Donohue    3 年前

    我也有同样的问题。当我检查它时,我发现布局下的XML资源的名称没有正确的命名约定。它有一些大写字母。所以我重新命名了它,使所有的字母都是小写的,魔法起作用了。

        4
  •  28
  •   Pawel    3 年前

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

        5
  •  17
  •   Carl G    3 年前

    在Eclipse中,只需使用project-->clean来清理项目。这个 r.java将自动(重新)创建。

    如果由于某种原因不起作用: 确保 layout.xml文件不包含错误。Eclipse在这里似乎有点麻烦:有时它既不标记XML中的错误,也不标记包资源管理器中的错误。在这种情况下:使用“clean”后,查看“console”或“problems”视图。所有错误都应该显示在那里。把它们修好,重新打扫。

    注意:不需要修复由于缺少R文件而导致的错误! 只需修复XML文件和其他项目错误并使用clean!

        6
  •  10
  •   androidWorkerTheEighth    3 年前

    快速修复:

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

    详细观察:

    注意包装名称 /Gen 文件夹。在我的案例中,它与 SRC 文件夹。

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

    我试图添加一个名为 SRC 文件夹到 /Gen 文件夹也可以看到会发生什么,但这并不能解决问题。然后我继续删除与 SRC 文件夹。此包的名称与 SRC 删除文件夹后立即重新创建。

    因为清单中的包引用与正在被无意识地重新创建的包对应,而与清单中的包不对应。 SRC 文件夹,提示重命名 package = "oldPackage" package = "srcFolderPackage" .

        7
  •  9
  •   Glaux    3 年前

    我也遇到了同样的问题,最后我发现了问题:在strings.xml中,我没有保留行 <string name="app_name">program-name</string> 在创建新的Android项目时,默认情况下会出现。我以为它只是用于Helloford程序,这是原始程序。

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

    =>编译错误;
    =>r.java未更新;
    =>无法识别ID…

        8
  •  9
  •   Amol    3 年前

    Android为构建机制添加了SDK构建工具ADT 22。您只需要执行以下步骤。

    1. 更新android sdk工具
    2. 更新android sdk平台工具
    3. 更新android sdk构建工具
    4. 将生成工具的路径添加到路径变量中。(路径到----您的目录路径\android sdk\build tools)

    这将解决问题。

        9
  •  8
  •   Shashank    3 年前

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

    删除此文件后,请尝试从菜单中清除项目 项目 -gt; 干净的 .

        10
  •  7
  •   Abel    7 年前

    作为glaux答案的概括,如果你有 任何 中的错误 res 目录,那么r.java可能不会生成-即使您清理并重新生成。首先解决这些错误。

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

        11
  •  6
  •   Nevin Chen    3 年前

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

    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. 开始日食:

      sudo eclipse
      
    4. 运行项目->在Eclipse中清除

        12
  •  6
  •   Erdinc Ay    3 年前

    XML文件中100%有错误 但是XML验证没有显示错误。这就是为什么您需要首先检查XML文件的原因!

        13
  •  5
  •   goseib    7 年前

    看看 问题 Eclipse中的选项卡。在我的情况下,我得到了一个 Android无法解析目标“Android-8” “阻止生成r.java的错误消息。所以,我更正了进口 目标 我用的那个 默认属性 文件,然后我执行了一个干净的通过项目->干净,瞧!自动生成r.java!希望它有帮助!

        14
  •  4
  •   Filippo Mazza    7 年前

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

        15
  •  4
  •   Zain Ali    6 年前

    确保没有导入

    Android;

        16
  •  4
  •   Peter Mortensen    3 年前

    如果在 res 文件夹。例如,在可绘制子文件夹中有两个同名文件,一个是icon.png,另一个是icon.html。

    您可以在Eclipse控制台日志窗口中看到一些错误,它说“资源条目图标已经定义。”。删除icon.html后,可以清除或只删除 gen 文件夹。您会发现R.java是被创建的。

        17
  •  4
  •   Peter Mortensen    3 年前

    我发现 任何 文件有 大写字母 res 文件夹将创建此错误。这件事发生在我身上 PNG 我添加的文件忘记了。

        18
  •  3
  •   Anup Singh    6 年前

    在阅读了许多帖子和YouTube视频之后,我发现我们每个人都有 R.java 因不同原因丢失。

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

    • 在中创建r.java gen 文件夹 手动 并保存。
    • 之后,转到Project并单击“清理”

    将显示以下消息并自动重写文件:

    r.java是手动修改的!正在还原到生成的版本!

        19
  •  3
  •   Shanker Kaura    4 年前

    对于我来说,我已经链接了两次V7 AppCompat。无论如何,在Eclipse中,右键单击PackageExplorer或Navigator中的项目名称,转到Propertiesandroid,然后取消选中库部分中的任何重复项。您可能需要在以后构建-->清理。

        20
  •  2
  •   Ben Mosher    7 年前

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

    我已经拥有 R.java 在(尝试)团队同步之后消失,并且项目中存在冲突解决文件(即, thingy.xml.mine , thingy.xml.r35 等)。删除它们/解决冲突重新生成 R .

        21
  •  2
  •   Mohamed El-Saka    6 年前

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

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

    它开始在我的XML文件和我的Java文件中导致整个项目的生成错误。一旦我重新输入我删除的内容,它就会再次工作:)

        22
  •  2
  •   Tomas Sedovic    1 年前

    好的,所以很明显,这个问题可能有很多原因。如果您在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

        23
  •  2
  •   Peter Mortensen    3 年前

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

    如果这不是导入的,那么返回的资源是默认资源,不包括我自己的资源。

    上面说,如果你发现你只得到一个默认资源列表,那么只需检查一下,确保你导入的是应用程序包,而不是android.r。

        24
  •  2
  •   Martin    3 年前

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

    我在用编译应用程序时发现了这一点 Ant .

        25
  •  1
  •   caw    5 年前

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

        26
  •  1
  •   Stefan Anca    5 年前

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

        27
  •  1
  •   Hakim    4 年前

    对于我来说,此错误是在我尝试复制现有的 res/menu 而不是用 wizard .

        28
  •  1
  •   Bevor    4 年前

    如果你使用maven,所有这些答案都不起作用。我的解决方案是

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

    到Android Maven插件的配置部分。

        29
  •  1
  •   aarifmkhan    3 年前

    我发现了一个解决方案,为什么R.Class在重新生成后不是由Eclipse生成的-2 clean、build等。

    问题出现在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通信。

        30
  •  1
  •   Howard    3 年前

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