我发现我的R.java永远不会更新,因此它不包含有关我的新资源的信息,所以我决定删除它并认为Eclipse会生成一个新资源 . 但这没有发生,我现在没有R.java . 我怎样才能再生一个?
我正在使用Windows 7 .
从其中一条评论:“做项目 - >清理是导致问题的原因 . 清理删除R.java ......无论出于何种原因,插件都没有重新生成文件 . ”
R.class突然丢失的一个原因是XML文件中存在错误 . 例如,当您添加名称为myCoolLayout.xml的大写字母的XML文件时,这是不允许的 . 或者当您的引用不指向现有文件等时 .
我有这个问题 . 不小心我删除了这个
xmlns:tools="http://schemas.android.com/tools"
这开始在我的XML文件以及我的Java文件中导致整个项目的构建错误 . 一旦我重新输入我删除的内容,它再次起作用:)
This site建议:
如果在项目上运行clean,它应该重新生成所有生成的Java文件,即R.
...和...
在Eclipse中,在“项目”菜单下,是一个自动构建选项 . 这将有助于您在每次修改时构建R.java文件 . “清洁...”选项也在“项目”下 .
This site建议另一种解决方案 .
我发现这种情况发生在我身上,布局破碎,一切都爆炸了 . 放松一下,这就像你第一次学习编程C时的那个老错误,你忘记了一个分号并产生了一百个错误 . 许多恐慌,按下所有按钮,让事情变得更糟 .
确保 R. 链接到的任何内容都没有损坏 . Fix all errors in your XML files . 如果ADK中的任何内容被破坏, R 将无法重新生成 .
R.
R
如果你以某种方式击中某些东西并在你的活动中创建 import android.R , remove it .
import android.R
运行 Project -> Clean . 这将删除并重新生成R和BuildConfig .
确保勾选 Project -> Build Automatically . 如果没有,请通过 Menu -> Project -> Build Project 手动构建它 .
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中的目标匹配 . 所以,如果它是绿色的蜱虫 . 如果您移动了一些文件和文件夹,则可能会发生这种情况 .
当您的XML文件损坏时,通常会发生这种情况 .
检查XML文件中的错误,主要是在 /res/ 文件夹中
/res/
常见的地方是 /layout/ 和 /values/ ,特别是如果你最近改变了其中一个
/layout/
/values/
检查 AndroidManifest.xml . 我发现经常更改字符串并忘记更改 AndroidManifest.xml 中的字符串名称 .
AndroidManifest.xml
检查是否已安装 Android SDK Build-tools . Window -> Android SDK Manager -> Tools -> Android SDK Build-tools
Android SDK Build-tools
确保在更新 Android SDK Tools 时,还要更新 Android SDK Platform-tools 和 Android ADK Build-tools . 如果它们不匹配,则构建将无提示失败 .
Android SDK Tools
Android SDK Platform-tools
Android ADK Build-tools
如果找不到问题, right click /gen/ -> Restore from local history... -> tick R.java -> click Restore . 即使它没有解决问题,它也会清除额外的错误,使问题更容易找到 .
我遇到过同样的问题 . 当我检查出来时,我发现布局下的XML资源名称没有正确的命名约定 . 它有一些大写字母 . 因此我将其重命名为使所有字母都小写,并且魔术起作用 .
在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文件和其他项目错误并使用干净!
清单中的包名称必须与 /src 文件夹中的包名称相同, /gen 文件夹包将自动复制 .
/src
/gen
观察 /gen 文件夹中的包名称 . 在我的情况下,它与 /src 文件夹中的不同 .
清单中引用的包是 /gen 文件夹的包 .
我试图添加一个名为 /src 文件夹的包 /gen 文件夹也看到会发生什么,但这并没有解决问题 . 然后我继续删除与 /src 文件夹的包名称不同的包名称 . 这个名称与 /src 文件夹不对应的包在我删除后立即重新创建 .
由于清单中的包引用对应于无意义地重新创建并且与 /src 文件夹中的包不对应的引用,因此提示使用 package = "srcFolderPackage" 重命名 package = "oldPackage" .
package = "srcFolderPackage"
package = "oldPackage"
我有同样的问题,我终于找到了问题:在strings.xml中,我没有保留创建新Android项目时默认存在的行 <string name="app_name">program-name</string> . 我以为它只用于程序HelloWord,这是原始程序 .
<string name="app_name">program-name</string>
但是,AndroidManifest.xml引用此值,因此:
=>编译错误;=> R.java没有更新;=> ID无法识别...
Android已在SDK构建工具ADT 22中添加了构建机制 . 您只需执行以下步骤即可 .
更新Android SDK工具
更新Android SDK平台工具
更新Android SDK构建工具
将构建工具的路径添加到路径变量中 . (路径最多----你的目录-PATH \ android-sdk \ build-tools)
这将解决问题 .
如果没有生成R.java,其中一个解决方案是删除名为“blabla.out.xml”的布局文件 .
删除此文件后,尝试从菜单项目 - >清洁中清除项目 .
作为Glaux答案的概括,如果 res 目录中有任何错误,则R.java可能无法生成 - 即使您清理并重建 . 首先解决这些错误 .
res
例如:当您添加一个像“myimage-2.jpg”的图像文件时,系统会将此视为错误,因为文件名仅限于字母数字值 . 添加任何文件后,在“res”目录上刷新,并在控制台窗口中查看输出是否存在任何文件名警告 .
如果您的操作系统是Ubuntu,我可以提供一些建议:
sudo apt-get upgrade ia32-libs
cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2 chmod 777 aapt
sudo eclipse
You 100% have an error in an XML-file ,但XML验证没有显示错误 . 这就是您需要首先检查XML文件的原因!
查看Eclipse中的Problems选项卡总是有帮助的 . 在我的情况下,我收到一条“ android unable to resolve target 'android-8' ”错误消息,无法生成R.java . 所以,我将导入的 target 更正为我在 default.properties 文件中使用的那个,然后我通过Projects-> Clean执行了清理,瞧! R.java是自动生成的!希望能帮助到你!
清理项目,关闭Eclipse,重新打开它并启动我的项目最终使我的R.java重新出现......希望它有所帮助
确保您没有导入
android.R;
如果 res 文件夹中有任何错误,则永远不会生成R.java . 例如,在drawable子文件夹中有两个具有相同名称的文件,一个是icon.png,另一个是icon.html .
您可以在Eclipse控制台日志窗口中看到一些错误,即"Resource entry icon is already defined." . 删除icon.html后,您可以清除或只删除 gen 文件夹 . 您会发现R.java已创建 .
gen
我发现 res 文件夹中包含大写字母的任何文件都会产生此错误 . 这件事发生在我身上,我添加了一个PNG文件并忘了 .
在阅读了很多帖子和YouTube视频后,我发现由于各种原因,我们每个人都缺失了 R.java .
R.java
这是我在Eclipse中修复它的方法:
在 gen 文件夹 manually 中创建R.java并保存 .
之后转到Project并单击"Clean"
将显示以下消息,您的文件将自动被重写:
R.java手动修改!恢复生成的版本!
对我来说,我已经连接了两次v7 appcompat . 无论如何,在Eclipse中,右键单击Package Explorer或Navigator中的项目名称,转到Properties,Android,并取消选中Library部分中的任何重复项 . 您可能需要构建 - >之后清理 .
显然没有最终答案,但这是我在这里没有看到的另一个:
在(尝试)一支球队之后,我已经消失了 R.java 同步,项目中有冲突解决文件(即 thingy.xml.mine , thingy.xml.r35 等) . 删除它们/解决重新生成的冲突 R .
thingy.xml.mine
thingy.xml.r35
好的,很明显这个问题可能有很多原因 . 如果您使用的是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
我几次遇到过这个问题 . 我发现如果我没有通过我的应用程序名称导入包R,例如,如果我的应用程序具有包名称example.test,那么我发现我必须导入example.test.R才能访问任何一个资源 .
如果没有导入,则返回的资源是默认资源,不包括我自己的资源 .
有了这个说,如果你发现你只获得了一个默认资源列表,那么只需检查以确保你导入的是application_package_name.R而不是android.R .
我的问题是 appcompat 与我的项目不在同一目录中 .
appcompat
我用Ant编译我的应用时发现了这一点 .
还要确保您拥有最新版本的ADT插件,并打开Android SDK管理器以将所有SDK工具更新到最新版本 . 检查Eclipse本身的更新 . 不匹配的版本给我带来了问题 .
我的问题是在菜单文件中 . 如果菜单文件中引用了 strings.xml 中不存在的字符串,编译器似乎不会发出警告 . 检查菜单XML文件中的 item 是否引用了 strings.xml 中不存在的任何字符串 . 通常在 android:title .
strings.xml
item
android:title
对我来说,当我尝试复制现有的 res/menu 而不是使用 wizard 创建一个时,会导致此错误 .
res/menu
wizard
如果您使用Maven,所有这些答案都无法解决 . 我的解决方案是添加
<genDirectory>${project.basedir}/gen</genDirectory>
到android-maven-plugin的配置部分 .
我找到了一个解决方案,为什么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通信 .
我更改了我的布局XML文件名,后来发现XML文件(在这种情况下是小部件提供程序)仍然引用了不存在的旧布局XML,这阻止了R类的自动生成/更正 .
30 回答
R.class突然丢失的一个原因是XML文件中存在错误 . 例如,当您添加名称为myCoolLayout.xml的大写字母的XML文件时,这是不允许的 . 或者当您的引用不指向现有文件等时 .
我有这个问题 . 不小心我删除了这个
这开始在我的XML文件以及我的Java文件中导致整个项目的构建错误 . 一旦我重新输入我删除的内容,它再次起作用:)
This site建议:
...和...
This site建议另一种解决方案 .
我发现这种情况发生在我身上,布局破碎,一切都爆炸了 . 放松一下,这就像你第一次学习编程C时的那个老错误,你忘记了一个分号并产生了一百个错误 . 许多恐慌,按下所有按钮,让事情变得更糟 .
解决方案
确保
R.
链接到的任何内容都没有损坏 . Fix all errors in your XML files . 如果ADK中的任何内容被破坏,R
将无法重新生成 .如果你以某种方式击中某些东西并在你的活动中创建
import android.R
, remove 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-tools
和Android ADK Build-tools
. 如果它们不匹配,则构建将无提示失败 .如果找不到问题, right click /gen/ -> Restore from local history... -> tick R.java -> click Restore . 即使它没有解决问题,它也会清除额外的错误,使问题更容易找到 .
我遇到过同样的问题 . 当我检查出来时,我发现布局下的XML资源名称没有正确的命名约定 . 它有一些大写字母 . 因此我将其重命名为使所有字母都小写,并且魔术起作用 .
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文件和其他项目错误并使用干净!
快速修复:
清单中的包名称必须与
/src
文件夹中的包名称相同,/gen
文件夹包将自动复制 .详细观察:
观察
/gen
文件夹中的包名称 . 在我的情况下,它与/src
文件夹中的不同 .清单中引用的包是
/gen
文件夹的包 .我试图添加一个名为
/src
文件夹的包/gen
文件夹也看到会发生什么,但这并没有解决问题 . 然后我继续删除与/src
文件夹的包名称不同的包名称 . 这个名称与/src
文件夹不对应的包在我删除后立即重新创建 .由于清单中的包引用对应于无意义地重新创建并且与
/src
文件夹中的包不对应的引用,因此提示使用package = "srcFolderPackage"
重命名package = "oldPackage"
.我有同样的问题,我终于找到了问题:在strings.xml中,我没有保留创建新Android项目时默认存在的行
<string name="app_name">program-name</string>
. 我以为它只用于程序HelloWord,这是原始程序 .但是,AndroidManifest.xml引用此值,因此:
=>编译错误;
=> R.java没有更新;
=> ID无法识别...
Android已在SDK构建工具ADT 22中添加了构建机制 . 您只需执行以下步骤即可 .
更新Android SDK工具
更新Android SDK平台工具
更新Android SDK构建工具
将构建工具的路径添加到路径变量中 . (路径最多----你的目录-PATH \ android-sdk \ build-tools)
这将解决问题 .
如果没有生成R.java,其中一个解决方案是删除名为“blabla.out.xml”的布局文件 .
删除此文件后,尝试从菜单项目 - >清洁中清除项目 .
作为Glaux答案的概括,如果
res
目录中有任何错误,则R.java可能无法生成 - 即使您清理并重建 . 首先解决这些错误 .例如:当您添加一个像“myimage-2.jpg”的图像文件时,系统会将此视为错误,因为文件名仅限于字母数字值 . 添加任何文件后,在“res”目录上刷新,并在控制台窗口中查看输出是否存在任何文件名警告 .
如果您的操作系统是Ubuntu,我可以提供一些建议:
You 100% have an error in an XML-file ,但XML验证没有显示错误 . 这就是您需要首先检查XML文件的原因!
查看Eclipse中的Problems选项卡总是有帮助的 . 在我的情况下,我收到一条“ android unable to resolve target 'android-8' ”错误消息,无法生成R.java . 所以,我将导入的 target 更正为我在 default.properties 文件中使用的那个,然后我通过Projects-> Clean执行了清理,瞧! R.java是自动生成的!希望能帮助到你!
清理项目,关闭Eclipse,重新打开它并启动我的项目最终使我的R.java重新出现......希望它有所帮助
确保您没有导入
android.R;
如果
res
文件夹中有任何错误,则永远不会生成R.java . 例如,在drawable子文件夹中有两个具有相同名称的文件,一个是icon.png,另一个是icon.html .您可以在Eclipse控制台日志窗口中看到一些错误,即"Resource entry icon is already defined." . 删除icon.html后,您可以清除或只删除
gen
文件夹 . 您会发现R.java已创建 .我发现
res
文件夹中包含大写字母的任何文件都会产生此错误 . 这件事发生在我身上,我添加了一个PNG文件并忘了 .在阅读了很多帖子和YouTube视频后,我发现由于各种原因,我们每个人都缺失了
R.java
.这是我在Eclipse中修复它的方法:
在
gen
文件夹 manually 中创建R.java并保存 .之后转到Project并单击"Clean"
将显示以下消息,您的文件将自动被重写:
对我来说,我已经连接了两次v7 appcompat . 无论如何,在Eclipse中,右键单击Package Explorer或Navigator中的项目名称,转到Properties,Android,并取消选中Library部分中的任何重复项 . 您可能需要构建 - >之后清理 .
显然没有最终答案,但这是我在这里没有看到的另一个:
在(尝试)一支球队之后,我已经消失了
R.java
同步,项目中有冲突解决文件(即thingy.xml.mine
,thingy.xml.r35
等) . 删除它们/解决重新生成的冲突R
.好的,很明显这个问题可能有很多原因 . 如果您使用的是64位Linux机器并且您只是第一次设置ADT,则可能会在R未自动生成的情况下遇到此问题 . 检查控制台选项卡,您可能会看到类似于以下内容的错误:
如果是这种情况,你需要安装ia32-libs,使用类似的东西:
详情请见:Android adb not found
我几次遇到过这个问题 . 我发现如果我没有通过我的应用程序名称导入包R,例如,如果我的应用程序具有包名称example.test,那么我发现我必须导入example.test.R才能访问任何一个资源 .
如果没有导入,则返回的资源是默认资源,不包括我自己的资源 .
有了这个说,如果你发现你只获得了一个默认资源列表,那么只需检查以确保你导入的是application_package_name.R而不是android.R .
我的问题是
appcompat
与我的项目不在同一目录中 .我用Ant编译我的应用时发现了这一点 .
还要确保您拥有最新版本的ADT插件,并打开Android SDK管理器以将所有SDK工具更新到最新版本 . 检查Eclipse本身的更新 . 不匹配的版本给我带来了问题 .
我的问题是在菜单文件中 . 如果菜单文件中引用了
strings.xml
中不存在的字符串,编译器似乎不会发出警告 . 检查菜单XML文件中的item
是否引用了strings.xml
中不存在的任何字符串 . 通常在android:title
.对我来说,当我尝试复制现有的
res/menu
而不是使用wizard
创建一个时,会导致此错误 .如果您使用Maven,所有这些答案都无法解决 . 我的解决方案是添加
到android-maven-plugin的配置部分 .
我找到了一个解决方案,为什么R.class在再次制作后不是由Eclipse制作的 - 2清理,构建等等 .
问题出在strings.xml中:
默认情况下,这些是在创建项目时由Eclipse创建的 .
当然,您正在根据自己的要求更改strings.xml . 有时您从代码中清除string.xmls这两行:
它在AndroidManifest.xml文件中出现问题:
所以它无法与strings.xml通信 .
我更改了我的布局XML文件名,后来发现XML文件(在这种情况下是小部件提供程序)仍然引用了不存在的旧布局XML,这阻止了R类的自动生成/更正 .