Android Studio 无法解决导入项目中的 R?

48

我正在尝试新的Android Studio。我使用构建gradle选项从eclipse导出了一个项目,然后在Android Studio中导入它。在gen文件夹下的R.java文件上有一个带有小红圈的j字母,在我的源文件中,无论我引用资源的地方,“R.layout.account_list”等都会出现“无法解析符号R”的错误。

我以前从未使用过Intellij。由于关于Android Studio的答案显然不多,因此会很感激任何帮助。谢谢!


2
点击 Build -> Make Project。 - Blackbelt
我尝试过了,但是出现了一个错误,说“指定的Gradle安装不受此工具API版本支持”。正在使用的Gradle版本是在Android Studio安装文件夹的“插件”文件夹中导入项目时必须指定的(它的版本是1.6)。另一个问题是,当我退出并重新启动Android Studio,并重新打开导入的项目时,它会显示“以下模块已从Gradle结构中删除”,并列出我的主模块(我的应用程序名称)。 - joe_deniable
我尝试使用Gradle 1.5,它可以进一步执行,但仍然失败并显示以下错误:java.lang.ClassNotFoundException: org.gradle.tooling.provider.model.ToolingModelBuilderRegistry。 - joe_deniable
也许你应该使用“生成 -> 重建项目”。 - ADK
谢谢,但这仍然导致相同的错误。使用gradle 1.6时,错误是Gradle安装不受支持,而使用gradle 1.5和1.4时我会得到ClassNotFoundError异常。也许我会尝试1.3... - joe_deniable
如果您在从Android Studio 0.1.5升级到0.1.6时遇到了问题,请给此问题点个赞。 - Benoit Duffez
31个回答

34
  1. 按下F4进入项目结构,在左侧勾选SDKs
  2. 点击模块 ---> 选项卡,将gensrc标记为源代码

注意:此回答超过一年,菜单已更改。


3
有没有手动完成这个的方法?升级后我收到了这个消息:“我们会提供一个界面来配置项目设置。在此之前,请手动编辑您的 build.gradle 文件。” 另外,在 Mac 上,使用的是 Command+分号 而不是 F4。 - Cartesian Theater
14
这不适用于我(这些文件夹不存在)。我有同样的问题,但是项目是从头开始在Android Studio中创建的,而且出现了无法解释的问题。 - takecare
13
“Scheck SDKs on left”是什么意思?此外,我在哪里可以找到gen和src文件夹? - Moberg
8
很抱歉听起来过于啰嗦,但是这些说明非常难以理解。F4 "into" 项目结构是什么意思?您说要在左侧检查SDK,但没有复选框。在模块下面有一个"Sources"选项卡,没有“检查”gen、src和sources的地方。请详细说明。 - HBG
3
您可以从文件菜单进入项目结构。您可以使用右键菜单检查"gen"或"src"。 - Crossle Song
显示剩余7条评论

29

文件 -> 无效缓存

然后

重新启动应用程序


3
嘿兄弟!这对我很有帮助。谢谢 ;) - Eliasz Kubala
我在桌子上痛苦地摆了近2个小时,终于解决了这个问题...感谢!但是为什么清理或构建操作不能解决这个问题???唉。 - GaryAmundson

13

到目前为止,网络上的所有答案都没有帮助我。 Build > Make Project 对我无效。对我来说,只需选择这个其他选项(在Android Studio 1.3.1上):

Build > Make Module 'module name'


很奇怪,“Make Project”不做这个的事情。只是另一个巫术操作,因为“它能用”。 - Riot Goes Woof

7
在我的情况下,我有一个从Eclipse导入的Activity文件,其中有一行代码:
import android.R;

所以我的所有R类都解析为SDK,只要我注释掉那行代码,所有内容就会正确编译到我的包中。我是在将项目从Mac移动到Windows机器时才注意到这个问题。


你在 Mac/Windows 的情况下做了什么? - alap
这是错误的,因为您无法访问 R.layout.<your app layout>。请导入 com.app.<projectname>.R(路径可能与您的项目不同)。 - Codebeat

4

当我开始使用build.gradle去整合构建签名.apk所需的数据(signingConfigs)时,这个问题开始出现。在命令行中构建成功后,我发现进入任何使用R.*的类时,所有的R.*引用都无法解析。

这里提供的答案没有帮助到我。我决定重新导入项目,这样它神奇地解决了这个问题。选择File/Import Project...并选择我的应用程序根文件夹中的build.gradle文件。我很想知道为什么重新导入可以解决这个问题 :)


3

这可能是由于资源构建失败导致的。

一旦问题解决,仅需进行 Build > Rebuild Project 即可解决问题。


2
我曾多次遇到这个问题而感到沮丧,尤其是在将项目库作为另一个项目的一部分进行集成时。最近一次出现这个问题时,我的Android库项目正在使用WebView。原来Gradle会在名为“web”的子目录中构建R.class文件,该路径与我的源代码路径无关。当我导入它后,我的问题就解决了。我学到了什么?将来只需搜索R.class文件并注意其所在的路径即可。然后使用该路径将包导入到您的代码中。手动执行这项操作真的很麻烦。Gradle应该自动导入它生成的包。

2

我之前也遇到了同样的问题,浏览了许多stackoverflow上的答案。后来我找到了一个解决方法,帮助我解决了这个问题。

请检查AndroidManifest.xml文件中的包名。我在将另一个项目复制粘贴到新项目时忘记更改它。


2

前往 文件 -> 设置 -> 编译器,现在勾选使用外部构建

然后重新构建项目


1
我的问题是我在drawable文件夹中有一个名为“default.jpg”的文件,但由于某些原因,每个资源都无法解析。删除该文件后问题得到解决!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接