我发现我的R.java永远不会更新,因此它不包含有关我的新资源的信息,因此我决定删除它并认为Eclipse会生成一个新资源。但这没有发生,我现在没有R.java。我怎样才能再生一个?
我正在使用Windows 7。
从其中一条评论:“做项目 - >清理是导致问题的原因。清理删除R.java ......无论出于何种原因,插件都没有重新生成文件。”
作为Glaux答案的概括,如果你在res
目录中有任何错误,那么即使你清理和重建,也可能不会生成R.java。首先解决这些错误。
例如:当您添加一个像“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
您100%在XML文件中有错误,但XML验证不会向您显示错误。这就是您需要首先检查XML文件的原因!
查看Eclipse中的Problems选项卡总是有帮助的。在我的情况下,我得到一个“android无法解决目标'android-8'”错误消息,导致R.java无法生成。所以,我将导入的目标更正为我在default.properties文件中使用的目标,然后我通过Projects-> Clean执行了清理,瞧! R.java是自动生成的!希望能帮助到你!
清理项目,关闭Eclipse,重新打开它并启动我的项目最终使我的R.java重新出现......希望它有所帮助
确保您没有导入
android.R;
如果res
文件夹中有任何错误,将永远不会生成R.java。例如,在drawable子文件夹中有两个具有相同名称的文件,一个是icon.png,另一个是icon.html。
您可以在Eclipse控制台日志窗口中看到一些错误,其中显示“已定义资源条目图标”。删除icon.html后,您可以清除或删除gen
文件夹。您会发现R.java已创建。
我发现任何在res
文件夹中都有大写字母的文件都会产生此错误。这件事发生在我身上,我添加了一个PNG文件并忘了。
在阅读了很多帖子和YouTube视频后,我发现我们每个人都因为不同的原因缺少R.java
。
这是我在Eclipse中修复它的方法:
gen
文件夹中创建R.java并保存。将显示以下消息,您的文件将自动被重写:
R.java手动修改!恢复生成的版本!
对我来说,我已经连接了两次v7 appcompat。无论如何,在Eclipse中,右键单击Package Explorer或Navigator中的项目名称,转到Properties,Android,并取消选中Library部分中的任何重复项。您可能需要构建 - >之后清理。
我发现这种情况发生在我身上,布局破碎,一切都爆炸了。放松一下,这就像你第一次学习编程C时的那个老错误,你忘记了一个分号并产生了一百个错误。许多恐慌,按下所有按钮,让事情变得更糟。
R.
链接到的任何内容都没有被破坏。修复XML文件中的所有错误。如果ADK中的任何东西被破坏,R
将不会再生。import android.R
,请将其删除。Menu -> Project -> Build Project
手动构建它。当您的XML文件损坏时,通常会发生这种情况。
/res/
文件夹中/layout/
和/values/
,特别是如果你最近改变其中一个AndroidManifest.xml
。我发现经常更改字符串而忘记从AndroidManifest.xml
更改字符串名称。Android SDK Build-tools
是否已安装。窗口 - > Android SDK Manager - >工具 - > Android SDK Build-toolsAndroid SDK Tools
时,还要更新Android SDK Platform-tools
和Android ADK Build-tools
。如果它们不匹配,则构建将无提示失败。显然没有最终答案,但这是我在这里没有看到的另一个:
我曾经(尝试)团队同步后R.java
消失了,项目中有冲突解决文件(即thingy.xml.mine
,thingy.xml.r35
等)。删除它们/解决冲突重新生成R
。
我有这个问题。不小心我删除了这个
xmlns:tools="http://schemas.android.com/tools"
它开始在我的XML文件和我的Java文件中导致整个项目的构建错误。一旦我重新输入我删除的内容,它再次起作用:)
好的,很明显这个问题可能有很多原因。如果您使用的是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
我几次遇到过这个问题。我发现如果我没有通过我的应用程序名称导入包R,例如,如果我的应用程序具有包名称example.test,那么我发现我必须导入example.test.R才能访问任何一个资源。
如果没有导入,则返回的资源是默认资源,不包括我自己的资源。
有了这个说,如果你发现你只获得了一个默认资源列表,那么只需检查以确保你导入的是application_package_name.R而不是android.R。
我的问题是appcompat
与我的项目不在同一个目录中。
我用Ant编译我的应用程序时发现了这一点。
还要确保您拥有最新版本的ADT插件,并打开Android SDK管理器以将所有SDK工具更新到最新版本。检查Eclipse本身的更新。不匹配的版本给我带来了问题。
我的问题是在菜单文件中。如果在菜单文件中引用了strings.xml
中不存在的字符串,编译器似乎不会发出警告。检查菜单XML文件中的item
s是否引用了strings.xml
中不存在的任何字符串。通常在android:title
。
对我来说,当我尝试复制现有的res/menu
而不是使用wizard
创建一个<genDirectory>${project.basedir}/gen</genDirectory>
时,会导致此错误。
如果您使用Maven,所有这些答案都无法解决。我的解决方案是添加
<string name="hello">Hello World, HelloAutoComplete!</string>
<string name="app_name">HelloAutoComplete</string>
到android-maven-plugin的配置部分。
我找到了一个解决方案,为什么R.class在再次制作之后不是由Eclipse制作的 - 2清理,构建等等。
问题出在strings.xml中:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloAutoComplete" android:label="@string/app_name">
默认情况下,这些是在创建项目时由Eclipse创建的。
当然,您正在根据自己的要求更改strings.xml。有时您从代码中清除string.xmls这两行:
它在AndroidManifest.xml文件中出现问题:
qazxswpoi
所以它无法与strings.xml通信。
我遇到过同样的问题。当我检查出来时,我发现布局下的XML资源名称没有正确的命名约定。它有一些大写字母。因此我将其重命名为使所有字母都小写并且魔术起作用。
我更改了我的布局XML文件名,后来发现XML文件(在这种情况下是小部件提供程序)仍然引用了不存在的旧布局XML,这阻止了R类的自动生成/更正。
R.class突然丢失的一个原因是XML文件中存在错误。例如,当您添加名称为myCoolLayout.xml的大写字母的XML文件时,这是不允许的。或者当您的引用不指向现有文件等时。
在Eclipse中,只需使用Project - > clean来清理项目。 R.java将自动(重新)创建。
如果由于某种原因,dos不起作用:确保layout.xml文件不包含错误。 Eclipse似乎有点儿错误:有时它不标记XML中的错误,也不标记包浏览器。在这种情况下:使用“干净”后查看“控制台”或“问题”视图。应该在那里显示所有错误。修复它们并重做干净。
注意:没有必要修复由于缺少R文件而导致的错误!只需修复XML文件和其他项目错误并使用干净!
清单中的包名称必须与/src
文件夹中的包名称相同,/gen
文件夹包将自动复制。
在/gen
文件夹中观察包的名称。在我的情况下,它与/src
文件夹中的不同。
清单中引用的包是/gen
文件夹的包。
我试图将一个名为/src
文件夹的包添加到/gen
文件夹中,看看会发生什么,但这并没有解决问题。然后我继续删除与/src
文件夹的包名称不同的包名称。这个名称与/src
文件夹不对应的包在我删除后立即重新创建。
由于清单中的包引用对应于无意义地重新创建并且与/src
文件夹中的包不对应的引用,因此提示使用package = "oldPackage"
重命名package = "srcFolderPackage"
。
我有同样的问题,我终于找到了问题:在strings.xml中,我没有保留创建新Android项目时默认存在的行<string name="app_name">program-name</string>
。我以为它只用于程序HelloWord,这是原始程序。
但是,AndroidManifest.xml引用此值,因此:
=>编译错误; => R.java没有更新; => ID无法识别...
Android已在SDK构建工具ADT 22中添加了构建机制。您只需执行以下步骤即可。
这将解决问题。
如果没有生成R.java,其中一个解决方案是删除名为“blabla.out.xml”的布局文件。
删除此文件后,尝试从菜单项目 - >清洁中清除项目。