我已经从Google Codes下载了代码,但当我将该项目导入我的Eclipse IDE时,它没有生成R.Java文件。我查阅了许多博客和论坛,并尝试了许多方法,如清理、重建、从现有源创建项目等,但仍然遇到问题。一些人提到这有时是由于SVN客户端软件引起的,但他们没有提到任何解决方案。如果您自己下载并找到确切的问题,我将不胜感激。
我已经从Google Codes下载了代码,但当我将该项目导入我的Eclipse IDE时,它没有生成R.Java文件。我查阅了许多博客和论坛,并尝试了许多方法,如清理、重建、从现有源创建项目等,但仍然遇到问题。一些人提到这有时是由于SVN客户端软件引起的,但他们没有提到任何解决方案。如果您自己下载并找到确切的问题,我将不胜感激。
一般来说,要使其正常工作:
但是它没有生成,为什么?
因为在 res 文件夹中的 xml 文件存在一些编译错误(或者说 bug),所以没有生成 R.java 文件(我在我的 Mac 上进行了测试):
在 res/values/styles.xml 文件中注释掉以下内容:
<style name="iWindowTitleBackground" parent="android:WindowTitleBackground">
<item name="android:background">@drawable/title_bar</item>
</style>
在res/values/themes.xml文件中,将以下内容注释掉:
<item name="android:windowTitleBackgroundStyle">@style/iWindowTitleBackground</item>
然后进行 项目 -> 清理,您应该会生成 R.java。
有一个错误报告称,在某些操作系统中无法解析 parent="android:WindowTitleBackground",更多详细信息请查看这里。
你会在文件顶部看到 import android.r 或者 r.java(我忘了)这行代码。你需要删除这行代码,清理项目并重新运行。
基本上,Android 使用 R 来引用项目中的项。但是当导入语句存在时,它会覆盖查找你的项目目录,并使用 Android 的目录。
在检查所有资源没有错误、清理、重建、重新启动等操作后,我仍然遇到了这个错误。
我通过过滤项目中的SVN文件来解决这个问题。
虽然问题提到了搜索,但解决方案也适用于编译时使用的文件。
重新启动后,一切正常。
请确保“.xml文件”和“图像文件”的名称为小写字母。
"我在尝试构建从code.google.com(这里)下载的wiktionary示例代码时遇到了相同的问题。我已经将其导入到一个新的Eclipse Juno项目中,该项目设置为使用Android 4.1和JDK 1.6。
以下是构建项目后控制台的摘录:
W/ResourceType( 6292): Bad XML block: header size 103 or total size 0 is larger than data size 0 C:\Development\WorkJava\android\sampleapps\Wiktionary\com.example.android.wiktionary.LookupActivity\res\values\strings.xml:23: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute? C:\Development\WorkJava\android\sampleapps\Wiktionary\com.example.android.wiktionary.LookupActivity\res\values\strings.xml:23: error: Unexpected end tag string
以下是res/values/string.xml的摘录:
<resources>
<string name="app_name">Wiktionary Word of the Day</string>
<string name="app_descrip">A fast Wiktionary browser and Word-of-day widget</string>
<string name="app_credits">"All dictionary content provided by Wiktionary under a GFDL license. http://en.wiktionary.org\n\nIcon derived from Tango Desktop Project under a public domain license. http://tango.freedesktop.org".</string>
<string name="template_user_agent">"%s/%s (Linux; Android)"</string>
<string name="template_wotd_title">"Wiktionary:Word of the day/%s %s"</string>
<string name="template_wotd_archive_title">"Wiktionary:Word_of_the_day/Archive/%s/%s"</string>
解决方案
在包含两个%s替换符的最后3个字符串定义中添加formatted="false",如下所示,可以解决问题。 重新构建项目将在gen文件夹中生成R.java。
<resources>
<string name="app_name">Wiktionary Word of the Day</string>
<string name="app_descrip">A fast Wiktionary browser and Word-of-day widget</string>
<string name="app_credits">"All dictionary content provided by Wiktionary under a GFDL license. http://en.wiktionary.org\n\nIcon derived from Tango Desktop Project under a public domain license. http://tango.freedesktop.org".</string>
<string name="template_user_agent" formatted="false">"%s/%s (Linux; Android)"</string>
<string name="template_wotd_title" formatted="false">"Wiktionary:Word of the day/%s %s"</string>
<string name="template_wotd_archive_title" formatted="false">"Wiktionary:Word_of_the_day/Archive/%s/%s"</string>
我多次遇到了这个问题。经验之谈是要检查你的 .xml 文件。
强调:当 .xml 文件出现问题时,R.java 文件不会被生成。
将工作区更改为新目录,并设置其权限,以便所有人都可以使用它。