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

时间:2013-05-16 12:02:53

标签: android intellij-idea android-resources android-studio

我正在尝试新的Android Studio。我使用build gradle选项从eclipse导出了一个项目。然后我在Android Studio中导入它。 gen下的R.java文件上有一个小红圈的j。在我的源文件中,无论我在何处引用资源,我都会“无法解析符号R”,例如: “R.layout.account_list”等。

我之前从未使用过Intellij。非常感谢任何帮助,因为Android Studio的答案显然不多。谢谢!

31 个答案:

答案 0 :(得分:34)

  1. 按F4进入项目结构,选中左侧的 SDK
  2. 点击模块 ---> 来源标签,选中 gen src 作为来源
  3. PS:超过一年的答案,菜单已经改变。

答案 1 :(得分:28)

  

档案 - >使缓存无效

然后

  

重新启动应用程序

答案 2 :(得分:13)

到目前为止,网络上的答案都没有帮助。 构建>制作项目对我不起作用。对我来说,这就像选择其他选项一样简单(在Android Studio 1.3.1上):

构建>制作模块'模块名称'

答案 3 :(得分:7)

在我的情况下,我有一个从Eclipse导入的Activity文件,其中包含以下行:

import android.R;

所以我的所有R类都解析为SDK,只要我注释掉所有内容都正确地编译到我的包中。当我将项目从Mac移动到我的Windows机器时,我只注意到了这个问题。

答案 4 :(得分:4)

当我开始使用build.gradle来合并必要的数据(signingConfigs)来构建签名的.apk时,这个问题开始发生。在看起来是命令行的成功构建之后,我发现使用R. *进入任何类,所有R. *引用都未解析。

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

答案 5 :(得分:3)

这可能是由于资源构建失败造成的 一旦问题得到解决,仅仅Build > Rebuild Project就能解决问题

答案 6 :(得分:2)

转到文件 - > 设置 - > 编译器现在检查使用外部版本

然后重建项目

答案 7 :(得分:2)

我在这个问题上多次受挫,特别是在将项目库作为另一个项目的一部分进行整合时。在最近出现这个困扰的问题时,我的Android lib项目使用的是WebView。事实证明,Gradle在名为" web"的子目录中构建R.class文件。其路径与我的源代码路径无关。当我导入它时,我的问题就消失了。我学到了什么?将来,只需对R.class进行文件搜索,并记下它所在的路径。然后使用该路径将包导入代码中。你必须手动执行此操作真的很糟糕。 Gradle应该自动导入它生成的包。

答案 8 :(得分:1)

关于以下内容,来自Crossle Song's answer

  
      
  1. F4 进入项目结构,检查左侧的SDK
  2.   
  3. 点击模块---> Source Tab,将gen和src检查为源
  4.   

尽管有消息“我们将提供一个用户界面以便稍后配置项目设置等等”,但这对我有用。

答案 9 :(得分:1)

如果您的文件没有错误并再次重建项目,则应检查所有文件:

  • 构建>重建项目。

或者在:

  • 文件>设置>构建,执行,部署>编译器

检查use external build并重建项目后。

答案 10 :(得分:1)

我也遇到了同样的问题,我在stackoverflow上经历了很多回答。然后我找到了一个解决方案来帮助我解决这个问题。

检查AndroidManifest.xml文件中的包名称。我忘了改变它,同时将另一个项目复制到新项目中。

答案 11 :(得分:1)

我的问题是我有档案' default.jpg'在drawable文件夹中,由于某种原因,每个资源都没有解决。删除该文件后修复!

答案 12 :(得分:1)

在IntelliJ 14上

检查是否排除了生成的来源。通常在项目结构中 - > [模块] - >路径 - >编译器输出:"继承编译输出路径"

答案 13 :(得分:1)

解决方案是打开项目结构窗口。 [按命令+;在mac ox s上。我不知道其他平台的关键捷径。你应该可以在"文件"下找到它。菜单。] 然后点击"模块"在"项目设置"部分,然后显示您的项目,最后将生成的R.java标记为Sources。

我正在使用Intellij的想法14.0 CE。 生成的R.java位于build / generated / source / r / debug / com / example / xxx

第一次真的不容易找到。

答案 14 :(得分:1)

按照以下五个步骤操作:

  1. 步骤1 ===>删除(CTRL X)XML清单文件中的其他标记。
  2. 第2步===>打开构建 - >清理项目。
  3. 步骤3 ===&gt;打开XML清单文件并过去最后一个附加标签,如: 标记清单文件示例: (<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
  4. 步骤4 ===&gt;再次执行步骤2.
  5. 步骤5 ===&gt;打开工具 - &gt; Android - &gt;使用'Gradle'同步项目。
  6. 我遇到了同样的问题,但经过所有步骤后,它对我有用。

答案 15 :(得分:1)

首先检查是否有导入android.R;在Android工作室中启用自动导入时会发生这种情况。

在那个注释后你使用R变量的代码的所有行(你可以评论整个类或...) 然后运行应用程序它重新生成R变量,你可以取消注释你的代码。

答案 16 :(得分:1)

除了上面的回复之外,以下是在IntelliJ(Not Studio)中对我有用的内容:

您需要将Android facet附加到现有Android模块。要执行此操作,请从“模块设置”中的模块列表中选择模块,点击顶部的“+”按钮并选择“Android”。见https://www.jetbrains.com/idea/webhelp/enabling-android-support.html

答案 17 :(得分:0)

尝试清理并重建后没有成功,请检查res文件夹中是否存在损坏的文件。

在我的情况下,损坏的.png文件导致了所有问题。

答案 18 :(得分:0)

我使用intellij 2016.1遇到了这个问题,因为我已经将生成的源设置为转到基础项目目录中的目录。

例如,在Android方面,&#34; Generated Sources&#34;我有:

Directory for generated files: <project dir>/target/intellij-gen

当我将其更改为<project dir>/gen时,问题就消失了。

同样,当我将其更改为<project dir>/gen2时,问题也消失了 - 但是我必须做一个深度清理才能让它再次编译:

rm -rf ~/.IdeaIC2016.1/system/compile-server/<project>_<hash>

并删除所有生成的目录和target目录。

答案 19 :(得分:0)

对于我来说,使用Android Studio 1.5.1,解决方案是使用稍微不同的名称重新创建整个项目。

我认为它没有处理应用程序名称&#34; Kommentator_AS&#34;,因为有几个地方包名为&#34; Kommentator&#34;代替。

答案 20 :(得分:0)

从Eclipse导入项目时出现此错误。原因是一些xml文件有错误。检查所有XML文件是否有错误。包括androidmanifest.xml,以及值,主题,样式,布局文件夹等.xml中的警告没问题,但错误会产生此错误。

然后,做一个清洁项目并重建。

答案 21 :(得分:0)

我解决了设置JAVA_HOME,CLASSPATH。

的问题

设置Java_path时,人们有时会跳过JAVA_HOME和CLASSPATH。

因此,请尝试检查环境变量。

CLASSPATH - &gt; ;

JAVA_HOME - &gt; C:\ Program Files \ Java \ jdk(版本)或安装Java的地方

然后检查可能有错误的xml文件(不要命名知名的东西,如按钮,文本等

答案 22 :(得分:0)

我有同样的问题。以下三个文件中的两个文件包名称错误。我手动更新了软件包名称,一切都重新开始了。

GEN / COM /示例/应用程序/ BuildConfig.java

GEN / COM /示例/应用程序/ Manifest.java

GEN / COM /示例/应用程序/ R.java

我不确定是什么原因导致他们改变,因为我之前从未修改过这些文件。

答案 23 :(得分:0)

就我而言:

我必须复制参考 R文件;即右键单击gen /&lt; package&gt; / R和复制参考。然后将其粘贴到您无法解析的代码中的R上。

这解决了我(在尝试了其他一切之后)。仍然不确定为什么它是诚实的。

答案 24 :(得分:0)

这些答案都没有帮助我!

我的问题不是问题!该程序可以完全编译并在设备上运行,但IDE给了我一个烦人的语法错误。它强调了包含“R”的代码行。

我可以解决这个问题的方法:

我刚在“myapp / gen /com.example.app/”文件夹中添加了这三个类:

BuildConfig

package com.example.app;
public final class BuildConfig {
    public final static boolean DEBUG = true;
}

清单

package com.example.app;
public final class Manifest {
}

<强> - [R

package com.example.app;
public final class R {
}

答案 25 :(得分:0)

就我而言,我发现&#34; android.R.layout.account_list&#34;被引用而不是&#34; R.layout.account_list&#34;。只需删除&#34; android。&#34;可以解决问题。希望这有用,因为有时候你太专注时可能会忽视。

答案 26 :(得分:0)

只需清理项目,然后将项目与gradle文件同步。

答案 27 :(得分:0)

就我而言(Linux,Android Studio 0.8.6),以下内容有所帮助:

档案&gt;项目结构&gt;模块&gt;选择主模块&gt;选择其方面&gt;生成的来源

更改&#34;生成文件的目录的值:&#34;

MY_PATH/.idea/gen

MY_PATH/gen

如果没有编译代码,apk就会构建并成功运行

但Android Studio编辑器突出显示mypackage.R.anything为&#34;无法解析&#34;在所有子包类

答案 28 :(得分:0)

https://stackoverflow.com/users/1373278/hoss发布的解决方案 以上为我工作。我在这里复制它是因为我还不能评论hoss'post:

删除import android.R; 来自您的活动文件。

我的设置:

Android Studio 1.2.2

将项目从一台Mac导出到Git(一切正常)。然后我从Git在另一台Mac上导入了该项目。多数民众赞成停止解析资源文件。

我在这个帖子上尝试了一切:

  1. 使缓存无效并重新启动
  2. 删除.iml文件和.idea文件夹并重新导入项目
  3. 清理并重建项目
  4. 除了从我的活动java文件中删除import android.R;之外没有任何作用。

    为避免此问题,请将.idea文件夹添加到.gitignore文件中。在Android Studio中,git为gitignore提供了一个很好的插件。安装此插件并右键单击.idea > Add to .gitignore

答案 29 :(得分:0)

检查build.gradle中的构建工具版本(对于模块应用程序)。然后转到android sdk manager看看是否安装了版本,如果没有安装它,或者将构建工具版本更改为如下所示安装版本。

    android {
          buildToolsVersion "22.0.1"
          ..
          ..
          ..
     }

答案 30 :(得分:0)

我遇到了同样的问题,并通过删除一个额外的库来修复它。

要尝试此解决方案,请转到文件&gt;项目结构(在Mac上你可以使用命令&#34; Apple;&#34;)

然后在左侧标签上选择应用。转到依赖项选项卡并删除额外的库。