在我引用的所有类中的每个实例中,R.id.something
都是R
红色的,它表示“无法解析符号 R”。此外,每次出现时都会R.layout.something
用红色下划线表示“无法解析方法 setContentView(?)”。该项目始终构建良好。一直看到这种情况很烦人。我在这里阅读了许多其他关于类似但最涉及从 Eclipse 导入项目的问题。我正在使用我认为是最新版本的 Android Studio 并且该项目是使用 Android Studio 创建的,并且没有任何“无法解决 R”问题。如果有人知道,我想知道是什么原因造成的。
95 回答
我也有这个问题。一个简单的 'gradlew clean' 和 'gradlew build' 就可以了。
单击Build- >Clean Project将执行 gradle clean
我使用的是 gradle 3.3.0。这是罪魁祸首。浪费了我生命中的 6.50 小时。Gradle 3.2.1 删除了该错误。
classpath 'com.android.tools.build:gradle:3.2.1'
更改 gradle 版本后问题解决。详细历史可以在这里找到。
我有一个类似的问题,这就是我所做的:
使用 Gradle 清理项目和同步项目,
检查我的 sdk 中的 buildTools 版本
从 build gradle (module) 将 minSdkVersion 从 8 更改为 9
defaultConfig {
applicationId "PackageName"
minSdkVersion 9
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
但这一切都没有帮助。
最后我找到了答案(这在我的情况下有效)
从 build.gradle(module:app) 更改
android {
compileSdkVersion 21
buildToolsVersion '21.0.1'
......
....
}
或者
选择文件 | 项目结构将构建工具版本更改为 21.1.1
- 检查您的 xml 文件。
- 清洁项目。
就是这个。
例如,我的条目中有一个条目strings.xml
:
<string name="A">Some text</string>
在activity_main.xml
我使用了这个字符串条目
<TextView
android:id="@+id/textViewA"
android:text="@string/A"/>
在处理项目时,我删除了
<string name="A">Some text</string>
因此activity_main.xml
变得无效。结果:无法解析 R。
因此,请检查您的*.xml
文件并清理项目。
如果您在将 java 文件或目录移动到其他位置后看到此错误,那么您可以保证 Android Studio 已经混淆了。你猜怎么着?撤消这些操作并不能解决问题。
因此,您尝试清洁,但这不起作用。
并且重新启动也不起作用。
但是尝试文件-> 使缓存无效/重新启动...-> 无效并重新启动
Android Studio 维护有关哪些文件依赖于哪些其他文件的信息。而且由于移动文件没有正确实现,移动文件会导致错误。这还不是全部:这些依赖项的缓存用于加速构建。
这意味着您不仅需要重新启动,还需要使这些缓存失效以恢复(或更准确地说,重建)健全性。
我想如果你把你的活动文件放到另一个文件夹而不是默认文件夹。您需要使用 . 将com.example.yourproject.R
(这是您的项目R
文件而不是Android.R
文件)导入所有活动R
。例如,在MainActivity
文件中插入这一行:
import com.example.yourproject.R;
这个问题似乎有很多原因。最近,我添加了一个名为 NewActivity 的活动进行测试。这创建了一个名为的文件res/menu/new.xml
,而 gradle 不喜欢该名称,因为 new 是保留字。
gradlew clean
或者
"Tools" -> "Android" -> "Sync Project with Gradle Files"
这些绝对是值得尝试的好东西,但在运行这些命令之前,您可能需要解决一些其他问题。
R.java 文件包含 xml 和 java 页面之间的链接。只有当您的某些资源文件出现问题时,才会出现“R 无法解决”。所以最好和有效的方法是删除res文件中最后完成的xml或drawable。然后根据android编码规范再次从那里开始。这是唯一的方法。有效且正确的方法。
还可以使用 Git 来正确跟踪代码。..
您最近是否更新了您的 SDK 工具?启动 android SDK 管理器并确保您拥有最新的 SDK 工具,该工具现在与平台工具分开。当我第一次更新我的 SDK 管理器时,我遇到了同样的问题,直到我关闭并重新打开 SDK 管理器,SDK构建工具包才显示安装/更新。
你的代码只是被打乱了。答案相当简单。
只需转到Build --> Clean Project。
这应该够了吧。
还要检查您的 Android Studio 版本。
我目前正在使用Android Studio 3.0.1。
我不得不R
在 android studio 中导入我的包。例如:import com.example.<package name>.R
只需清理您的项目并使用 Gradle 文件同步项目。
问题将得到解决。
我有这个
- 我的可绘制资源中的大写字母。
- 导入由 Android Studio(或 Eclipse)添加的 Android.R
- xml文件中的错误
我最近遇到了这个问题,而清理/构建等并没有解决它。我猜我在某个地方遇到了问题,但不确定在哪里可以找到它(是在清单、资源 xml 文件等中吗?)。
当出现问题时,您可以通过运行代码分析来找出问题所在。
从顶部的菜单中选择:
分析 -> 检查代码,使用“默认”配置文件扫描整个项目。
您的检查结果将包含一个名为“Android”的元素。在这里,您将获得导致资源和清单文件出现问题的任何内容的列表。这些错误将打开生成的 xml 文件,这些文件将以红色显示任何错误。
我的确切问题是由于我使用基于风味的清单文件而引起的,并且我<application>
意外地在风味中复制了标签内的一些权限。
更新:在修复后 Android Studio 仍然显示错误之后,我确实遇到了一个问题,即使我现在可以在错误仍然存在的情况下构建并运行得非常好。(我正在运行一个金丝雀版本,所以现在把它放下)
我遇到了同样的问题:Android Studio 3.2 该项目编译并运行良好,但我收到“无法解析符号“R”屏幕警告
没有帮助:
- 构建->清理项目
- 构建->重建项目
- 文件->使缓存无效/重新启动
帮助:
任何一个
在 build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
...
}
用。。。来代替
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
...
}
或者
将 Android Studio 更新到3.3
当我手动重命名我的应用程序的域文件夹时,我遇到了这个问题。为了解决这个问题,我不得不
- 设置in的正确
package
文件夹结构。<manifest>
AndroidManifest.xml
android:name
为<activity>
in设置新的包位置AndroidManifest.xml
。- 清除缓存
文件菜单-> 使缓存无效/重新启动...
一旦 Android Studio 重新启动并构建新索引,问题就会消失。
这是一个非常古老的问题,但它仍然经常发生,并且这里没有真正全面的答案。
我遇到这个问题的次数比我想承认的要多。它可能是由各种各样的问题引起的,这些问题大多与您的项目结构不符合预期有关。这是我遇到的所有问题的列表:
从 Eclipse 导入到 Android Studio 并不总是很顺利,尤其是使用旧版本的 Android Studio。确保您使用的是正确的目录树。对于一个中等成熟的应用程序,它应该看起来像这样:
AppName/ // AppName is your app's name, obviously
.gradle/ // This is a compiler created directory. You should normally leave it alone
.idea/ // Ditto
build/ // This too
gradle/ // And this
app/
build/
libs/
src/
androidTest/ // Tests based on the Android instrumentation runner should go here
main/
java/
fully/ // Typically com
qualified/ // the domain name. Longer package
// names may have deeper folder trees
AppName/ // All your java files go here
res/
drawable-*/ // One of these for each resolution you support
layout/ // All of your general layouts
menu/ // All of your menu layouts
values/ // All of your resource xml files
xml/ // PreferenceScreen layouts go here
AndroidManifest.xml
debug/
test/ // Pure jUnit tests should go here
.gitignore
app.iml
build.gradle // This is the gradle file you should be making most changes to
proguard-rules.pro
.gitignore
build.gradle // This gradle file should mostly be left alone
gradle.properties
gradlew
local.properties
AppName.iml
settings.gradle
它在您的 IDE 中可能看起来不像这样。文件树上方有一个下拉菜单,它以不同的方式显示您的文件,它在我的系统上默认为一个名为 Android 的系统,它将您的文件分成不同的类型。从名为 Project 的项目中解决此类问题更容易,直接从您的操作系统的文件系统中更容易解决,因为 Android Studio 会将仅包含另一个文件夹的文件夹折叠到一行中。
特别是如果您更改了应用程序的名称,您需要确保源代码树 main/java/com/domain/AppName 已更新。还要确保你的 AndroidManifest.xml 中的包标签是正确的。
如果您的 Gradle 文件或 AndroidManifest.xml 中有错误,这将阻止 Android Studio 正确构建您的资源文件。有时升级 Android Studio 会破坏 Gradle 文件,尤其是从 1.0 之前的版本开始。有时这是因为它停止支持旧版本的 Gradle 插件,因此您需要更新版本号。有时很难找到当前版本。截至今天,2015 年 7 月 17 日,我的应用程序使用com.android.tools.build:gradle:1.2.3
. 这是在最外层的 gradle 文件的依赖块中,
如果您的 AndroidManifest 引用了不存在的可绘制资源或字符串资源或活动,它将中断并导致此错误。有时,如果任何内容引用了不存在的可绘制资源或字符串资源,您将收到此错误。
如果您的资源中有文件已损坏,或者 xml 文件无效,您将收到此错误。
根据我的经验,有时 Android Studio 会无缘无故地打嗝,您需要重新启动它和/或您的 PC。我不知道为什么,但有时它会起作用。
如果您有两个同名的 xml 资源,在不相互覆盖的目录中,您可能会遇到此问题。例如,您可以在 drawable-mhdpi 和 drawable-xhdpi 中使用相同的名称,因为它们会根据目标设备相互覆盖,但是如果您在布局和菜单中使用相同的名称,则会导致问题。重命名或删除其中一个文件。
如果只有某些资源存在此问题,则这些资源很可能位于错误的目录中。
在一种情况下,我不得不完全重新安装 Android Studio。我不知道出了什么问题,但它起作用了。
在一种情况下,我将整个项目移动到不同的目录并将其作为新项目重新导入。我不知道出了什么问题,但它起作用了。
名称保留字的 XML 文件可能会导致此问题。重命名或删除它们。
您的 Gradle 文件可以通过多种方式最终引用您尚未安装的构建工具版本。通过更改 Gradle 或下载适当的构建工具来纠正此问题。
最后,在你修复了任何错误之后,你需要清理你的 Gradle 项目。您可以通过转到顶部的 Build 菜单并选择 Clean Project 来执行此操作。
对于这个问题,我有一个特殊情况。
在我的项目中,一切顺利,可以编译构建成功,但是在我的Android Studio IDE中(我也尝试过Intelligent IDEA,他们的情况相同)R.java文件无法很好地解析并且总是下降到红线。
这几乎让我发疯,我在编程时无法忍受读取颜色。
最后我发现这个棘手的问题是由我的 R.java 文件大小引起的。我的项目非常庞大,它支持多种多语言和多屏幕尺寸。资源太多,我的 R.java 的文件大小约为 2.5M。
Android Studio 中文件的最大大小默认设置为 2.5M,因此无法很好地解析大于此限制的文件。您可以更改“AndroidStudio-root/bin/idea.properties”中的默认设置。
改变这一行:
idea.max.intellisense.filesize=2500
至 :
idea.max.intellisense.filesize=5000
然后重启Android studio,红色消失,我又可以愉快地编程了。
我有同样的问题,当我创建一个新项目时会发生这种情况。
我要做的是:
- 检查 SDK 更新
- 然后android studio更新,
- 然后重新打开项目
- 打开 andoridmanifest.xml
- 擦除 android:label 中“_>”之间的空格并保存。
这对我行得通。
我自己很难解决这个问题。
- 确保您的 layout.xml 文件中没有错误。
- 转到构建 > 清理项目
它对我有用,希望它也对你有用。
构建 > 清理项目
这对我有用。有几次同样的问题,这似乎是正确的。除非您更改了某些内容或调用了变量 R。这个问题通常会突然发生,当它发生在我身上时,所以我想它只是 Android 工作室吓坏了。哈哈
祝你好运,祝你的项目好运。
执行:构建 > 清理项目
重要提示:确保在消息窗格 (Alt+0) 中清理项目后没有任何错误。如果您发现任何带有感叹号的红色圆圈,则必须删除代码中的这些错误。
这些错误大多与@string/ 或@array/ 有关。再次清洁项目并完成!
`我有同样的问题,它通过以下方式解决:
1) Sync Project with gradle files
2) Build -> Clean Project
3) Build -> Rebuild Project
4) File -> Invalidate caches
//imp step
5) Check your xml files properly.`
我有同样的问题,大多数时候它是由
- 将项目与 gradle 文件同步
- 做构建 - >清理项目
- 执行文件-> 使缓存无效
但这一次,即使做了所有这些事情,错误仍然存在,最后我找到了罪魁祸首。
问题出在xml 文件中,我在其中给出了普通字符串值android:id
而不是id 资源类型。
错误
android:id="username"
更正
android:id="@id/username"
弄乱与
resources
xml 文件相关的内容是此错误的主要原因。请注意,它可能不会在 xml 布局文件中显示为错误。
笔记
在大多数情况下,编译器会在消息中向您显示错误的来源。在尝试其他解决方案之前先尝试检查它
同样的问题。当我在我的可绘制文件夹中添加一些图像并尝试访问它们时开始。此外,添加的图像具有大写字母的扩展名。这似乎使构建崩溃,因为即使我重命名它们,消息也是相同的并且 R 无法访问。我所做的是,在 .iml 文件中,我查找了 excludeFolder 并删除了它们(如下所示):
<excludeFolder url="file://$MODULE_DIR$/build/apk" />
<excludeFolder url="file://$MODULE_DIR$/build/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/bundles" />
<excludeFolder url="file://$MODULE_DIR$/build/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/libs" />
<excludeFolder url="file://$MODULE_DIR$/build/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/res" />
<excludeFolder url="file://$MODULE_DIR$/build/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
之后我重建了项目,R 神奇地重新出现了。
这种表示法似乎工作正常。
android:id="@+id/viewID"
Android Studio 的设计面板似乎不太好用。
只需从根包中导入 R 符号
import rootpackage.R;
没有重建,同步或其他东西......
导致此错误的原因有很多。
- 有时会发生替换保持相同名称的图像文件。
- 假设您从布局 .xml 中删除了一个项目,比如 a
<Button/>
,但它仍然在任何 Activity 或 Fragment .java 中声明。 - 还有很多。
跟踪错误的最佳方法是重建它而不是干净或同步做一些故意的错误。
如果它不能解决您的问题,那么必须存在一些缺陷或运行时错误或由于资源使用不当而发生的错误,可能是您的代码或设计中的 java 或 xml 文件,这迫使 gradle 停止,因为(R )esource 文件无法正确索引您的资源,您必须承认这一点。
如果您的项目在您进行更改之前运行,则注释掉您所做的更改并尝试重建项目。
它肯定会起作用,因为不会有任何变化。
要追踪确切的错误,请通过将更改分解为更小的模块来检查更改。
例如 - 如果您通过单击按钮并在适配器中插入列表值使列表可见,请首先检查您是否能够使其可见,然后检查适配器错误。
这发生在我最近更新项目的大部分库时。R
没有找到,但我可以很好地构建和运行该项目。它没有崩溃。IDE 到处都显示为红色。
我尝试过了
- 检查损坏/不正确的 XML 和图像,没有找到
- 检查无效的资源文件名(例如大写),没有找到
- 降级一些库,因为可能是资源冲突,没有解决
- 降低了
compileSdkVersion
,targetSdkVersion
因为在过去,我因此遇到了资源问题。然而,在这个项目中,情况并非如此。 - 干净,没有帮助
- 重建项目,没有帮助
- 多次使缓存无效/重新启动,没有帮助
- 调整
idea.max.intellisense.filesize
到非常高的值,没有帮助 - 是否运行了 Lint,没有发现错误
最后,我发现降级我的 Gradle 构建工具(从 3.3.1 到 3.2.1)解决了这个问题。那是我必须做的唯一改变。其余的,更新。现在,我所有的库都已更新,没有问题。
buildscript {
repositories {
google()
jcenter()
}
dependencies {
//classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
我在可绘制资源中添加了一些图像,其中一张图像被命名为“超级.jpg”,结果证明这是一个原因。
重命名图像并在将项目与 gradle 文件同步之后修复了错误。
这让我很头疼。在我的情况下,在 Android Studio 中配置“Google Play Services”(安装 + build.gradle 配置)后出现错误。这反过来又需要 minsdk > 7 但错误对此非常不清楚(实际上对此的投诉仅显示为“信息”)。无论如何..在清单文件和 build.gradle 文件中将 minsdk 更改为 8 并重建项目后,错误就消失了。
所以.. 关于这个的一般建议,如果我可以概括的话 - 你的清单文件或其他一些配置文件中可能有一些问题,这会阻止正确的构建。尝试仔细查看错误报告,甚至标题为“信息”的消息,以获取有关它可能是什么的任何提示......
在 Ubuntu 12.04 上,这些都不适合我。我必须执行以下操作:
sudo apt-get install lib32stdc++6
sudo apt-get install lib32z1
在那之后,我在这个线程中遵循了一些其他的建议,做了 Build -> Clean Project,一切都很好。
清理、重建和“缓存删除”对我没有帮助,更新 Android Studio 修复了这个问题。
每次对我有用的一件事是:
转到-->build.gradle (Module: app)
你的项目文件-->做一些改变(例如:把a<space>
放在某个地方并把它删除)-->然后android studio会问你到sync
你的gradle文件-->在右上角文件 --> select "sync now"
.
同步完成后,它会在大多数情况下解决问题。
就我而言,导入应用程序域名后跟“.R”解决了这个问题。例子:
import com.example.myapp.R;
对我来说,问题是我升级到了似乎有一些错误的 Gradle 版本。3.4.0-alpha02
是我更新的内容,发现这是“无法解析符号 R”错误的罪魁祸首。我恢复到3.3.0-alpha10
(即classpath 'com.android.tools.build:gradle:3.3.0-alpha10'
),它解决了这个问题。
这显然不是一个持久的解决方案,因为我迟早需要升级,但截至 2018 年 11 月 3 日3.4.0-alpha02
是最新版本,它阻碍了我的开发,因为它不允许我通过单击 R 参考来绕过 IDE。
在带有 Android Studio 0.2.13 的 OS X 上,我在我的一项活动中对 com.< 项目 >.R 导入进行了“跳转到声明”。当我回到活动文件时,所有警告都消失了。
编辑:您需要先构建当前的构建变体,然后才能工作。
确保项目中有 AndroidManifest.xml。
我碰巧导入了一个还没有清单的项目,因此 Android Studio 不会将其识别为 Android 项目。然后我在 GIT 中提取了项目并下载了清单但仍然无法正常工作。然后我重新启动了 Android Studio,它说“框架检测到 android”。
因此,请确保您的项目配置为 Android 项目。
以上答案都没有帮助我。我终于意识到问题在于 Android Studio 中缺少“build”文件夹。我在项目“iml”文件中发现了许多行,不包括“build/*”。删除这些后,构建文件出现并且错误消失了。
在我的情况下,代码在我更新 android studio 之前工作正常。更新后没有生成R文件。我正在处理自定义视图并且有一个属性
<attr name="showText" format="boolean" />
在我声明的样式中。系统的 ui 也使用了相同的属性:
<style name="Base.Widget.AppCompat.CompoundButton.Switch" parent="android:Widget.CompoundButton">
<item name="track">@drawable/abc_switch_track_mtrl_alpha</item>
<item name="android:thumb">@drawable/abc_switch_thumb_material</item>
<item name="switchTextAppearance">@style/TextAppearance.AppCompat.Widget.Switch</item>
<item name="android:background">?attr/selectableItemBackgroundBorderless</item>
<item name="showText">false</item>// this line
</style>
我将之前的showText重命名为showTextFormat ,然后 gradle sync 重新生成了 R.java 文件。
就我而言,在 android studio 版本 0.8.9 出现相同的错误(无法解析符号 R)后,我所做的是转到 File-> Project 结构并将 JDK 位置更改为我手动安装的 oracle JDK。所以在我的情况下,在 linux 中而不是 /usr/lib/jvm/java-7-oracle 是预设的。我将其更改为 /home/phvz/App/jdk1.8.0_20 保存设置并立即修复 R 符号问题
我android:textAllCaps = "false"
在androidmanifest中对R file
. 我删除了它,一切都很好。我认为target sdk
设置的不够高。
伙计们,我认为这里有很多黑暗中的镜头。在某些情况下,只有在您解决了问题后,清理和同步项目才会有所帮助。
Step1:
所以去查看每个文件的顶部,其中指定了包,如下所示pakage="YourURL.YourProject";
,并确保指定了正确的包(您自己的项目)。您将在java文件和AndroidManifest.xml中找到它,并且 java 文件引用正确的包至关重要,因为该包包含您指向的资源(“R”)。如果它们不匹配,则错误无法解决 Symbol R发生。
第 2 步: 清理、同步等。完毕
那么为什么这会随机发生或者我做错了什么?
如果你复制和粘贴代码,你应该密切注意上面解释的“package=”。更重要的是,当您粘贴代码时,它会立即运行一种调试器(请原谅我的糟糕技术术语)向您显示“假定错误”,它会立即考虑“错误包”,并且您会得到所有错误。因此,即使您在粘贴后立即更正了符号,调试器也已经刷新。这就是为什么“清洁、同步、随便”有时会起作用的原因
当我导入 google-services.json 文件以实现 Analytics 时,我遇到了这个问题。我已经在 xml 文件夹中有 global_tracker.xml 文件。在构建期间,在合并 google-services.json 文件中的内容时,开始出现错误。
删除goolgle-services.json
文件后错误得到解决。
我遇到了这个问题,尤其是当我不小心损坏了布局或菜单资源文件时。我遇到的无法解析符号 R的场景是当我忘记添加“ @+id
”时,我必须在菜单项中定义一个 id。
使用损坏的菜单资源文件,如果我尝试使用它构建项目,我会收到此错误。因为R是资源的容器类,所以当gradle无法解析资源、.xml文件时,似乎无法绑定R。
解决方案是简单地修复资源文件,清理项目并重新构建。
Build -> clean project or Rebuild project or File -> Invalidate Caches / Restart... -> Invalidate and Restart
修复“无法解析符号 r”错误。试试这些解决方案。
构建 -> 清理项目。
构建 -> 构建项目。
- 构建 -> 制作项目。
- 工具栏中左起第三个图标 -> 将项目与 gradle 文件同步。
- 文件 -> 使缓存无效并重新启动。
- 确保您在应用程序级别的 gradle 文件中使用兼容的 gradle 版本。
例如:“类路径'com.android.tools.build:gradle:XXX'”。
我希望这些解决方案可以帮助你。
谢谢阅读。
对我有用的是:
创建了一个新项目。
发现R正在工作!
- 比较了所有的配置。
发现 gradle 文件中的差异: compile 'com.android.support:appcompat-v7:23.4.0'
同步,它又工作了!
就我而言: res/someLayout.xml 文件出现了一些错误,然后我解决了它。然后清除项目。错误消失了。
这是由于最近在 Android Studio 中删除的 xmls 通过选择:build -> clean project 从这些 xmls 中清除您的项目引起的
我将 XML 文件放在 LAYOUT 文件夹而不是 MENU 文件夹中。
这是从 Eclipse 迁移到 Android Studio 的结果。
对我来说解决方案很简单......将我的 XML 文件移动到 MENU 文件夹并重新编译。
显然在我的情况下,问题是通过在末尾添加一个“*”来解决的
import android.R.*;
我遵循了上面的所有内容,但没有成功。就我而言,当我为 Android-L 预览设置了红色的每个 Java 函数时,我必须设置 JDK...
在 Mac 上:
- 单击代码中红色(或带下划线)的部分(即活动、字符串)。
- 单击左侧出现的红灯灯泡点。
- 选择“设置 JDK”。
- 验证 annotations.jar 和 android.jar 是否在您正在使用的当前 SDK 版本中(我的案例 SDK 20 Android-L)。您还应该有“res”文件夹,但不知何故我仍然在设置中拥有它。
- 如果没有,请选择 SDK 并按“-”。
- 然后按“+”并在您的计算机上找到 SDK 文件夹(Mac:应用程序 > Android Studio.app > sdk)。
- 选择您需要的 SDK 版本(在我的例子中是 20 Android-L)。
- 按添加。
- 构建和同步。
然后对我来说一切都恢复正常了。
注意:仅当您的项目非常大时,这可能会对您有所帮助
TL;DR - 生成的 R 文件超过 2.56 MB 并且 Android Studio 没有对其进行索引,您可以在此处遵循解决方案:
文件大小超出配置限制 (2560000),代码洞察功能不可用
面临着类似的问题。但这里的答案似乎都没有奏效。
R 文件大于 2.56 MB,在打开生成的 R 文件时,我收到一条消息说“代码洞察可能不可用”
更改idea.properties 中的默认值以允许更大的文件就可以了。
抱歉格式化,在移动设备上。
我目前有类似的问题。问题是在我的项目中我有更多的模块。例如app
模块和library
模块。尽管两者,类和R.string
资源都来自app
我以某种方式import com.package.library.R
在那里拥有的模块。不知何故,Android Studio 没有将其识别为错误,Gradle/Sync 毫无问题地构建了我的项目。但是当我尝试运行单元测试时,Gradle 构建失败并出现描述的错误。
package com.package.app
import com.package.library.R;
//...
class SomeClass {
//...
public void someMethod() {
Toast.make(context, R.string.message, TOAST_LONG).show();
}
}
当R.string.messsage
资源实际上在我的com.packagename.app
模块中而不是com.packagename.library
模块中时。删除import ...
解决了我的问题。
在新的 android studio 2.2 中。如果您的 TargetSDK =< 15,那么您也可能会发现此问题。在 gradle.build 中更改它,然后按照前面的答案执行步骤。同步 gradle 文件并重建。您还可以使缓存无效并重新启动有时也有帮助的工作室。
我也遇到了这个问题,并以这种方式解决了它。首先转到 Gradle 并单击清理。其次点击构建。
确保不要从 android studio 中清理
考虑以下 IDE 功能:
- 将项目与 gradle 文件同步
- 构建 -> 清理项目
- 构建 -> 重建项目
- 文件 -> 使缓存无效
我的简单解决方案是:
- 检查
build.gradle
app的依赖或者目录下的所有资源文件中是否有错误行/res
;其中一些常见错误是在使用时没有引用属性值:- “@细绳/..”
- “@风格/..”
- 确保在重建项目时没有收到Android 资源链接失败类型的错误。
- 打开包含错误行的文件
Cannot resolve symbol 'R'
- 使用所述错误行滚动到类的最后一行
- 单击类的关闭键}右侧的位置
这样,IDE 警报对话框就会出现以执行 R 类的导入。
总帐
就我而言,我需要修复布局 XML 文件中的一些错误。没有指示文件包含错误的图标。但是,当我单击它们时,我注意到几条红线。修复它们后,R
被发现。
就我而言,当我尝试从另一个包调用R时出现此错误。导入R包解决了我的问题。
import com.mtdaps.yourapp.R;
在非基本功能的 Instant App 活动中,您可以调用R.id.fromFeatureOne
和R.is.fromFeatureTwo
。因此,来自不同资源的项目被称为单一资源来源。
两者都将突出显示为可接受的,您甚至可以跳转到源代码。但是构建会导致错误:“找不到符号 R.id ”,这很难找到原因,因为没有突出显示。
解决方案是调用com.example.feature.one.R.is.fromFeatureOne
and com.example.feature.two.R.is.fromFeatureTwo
。
还在 Google 上发布了一个错误:https ://issuetracker.google.com/u/0/issues/77537714
以上答案都没有解决我的问题。所以我添加了我的解决方案,以防有人遇到类似问题。在我的 build.gradle 依赖项中,
compile 'com.android.support:appcompat-v7:22+'
而我的 compilesdk 版本是
compileSdkVersion 21
,所以 android studio 不高兴。我只是将我的 compilesdkversion 更新为 23 并进行了同步。
我还将依赖项更新为
compile 'com.android.support:appcompat-v7:23.1.1'
在工具--> Android--> SDK 管理器--> SDK 工具选项卡--> Android 支持库--> 版本中匹配我的支持库。现在一切都很好。快乐编码:)
就我而言,我正在尝试clean
和rebuild
该项目。该问题未解决,因为布局文件中存在错误。为了重新创建,我在 app 命名空间中的属性上添加了一个错字。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/add_user"
android:icon="@android:drawable/ic_menu_add"
android:title="Add User"
app:showAsActioin="always"
/>
</menu>
Android Studio 没有检查app
命名空间的属性,似乎文件没有错误。现在在构建项目时,它说Cannot resolve symbol 'R'
。错误显示在构建日志中。
修复错字修复它,在构建日志上观看Android 问题部分。
将 gradle 插件从版本升级到后出现此1.3.1
错误
classpath group: 'com.android.tools.build', name: 'gradle', version: '2.2.1'
它迫使我更改所有引用,例如
import [applicationId].R;
至
import [package].R;
在我的图书馆项目中,appcontext.getPackageName();
停止正常工作。我使用它通过反射获取正确的应用程序资源,但在升级 gradle 插件后,它开始返回特定于风味的 applicationId,而不是包......你可以在这里阅读更多相关信息。
还有一件事要尝试...
- 删除构建文件夹
- 通过同步 gradle 重建项目
我已经在这里尝试了许多其他建议,例如
- 清理项目,
- 重新启动 Android Studio,
- 修复我的xml中的错误,
- 将项目与 Gradle 文件同步,以及
- 更新构建工具版本,
但这些都不起作用。
我最后只是手动删除了整个构建文件夹(在备份我的项目之后),然后重新启动了 Android Studio。之后,我在我的应用程序 build.gradle 文件中做了一个小的编辑(添加和删除了一个空格),然后单击了同步。(我可能刚刚从菜单中完成了 Tools > Android > Sync Project with Gradle Files。)之后它就起作用了。构建文件夹中的某些内容已损坏,并从新构建修复它重新开始。
我不知道是否有人在解决方案列表中阅读了这一点,但无论如何我都会添加这个答案。
如果您对 .xml 文件有任何错误,无论您做什么,都无法解决该问题。我建议
-首先,检查您的 XML 文件以查找任何错误,然后
-second 查找事件日志,Android Studio 捕获了错误,它将为您提供哪个文件以及错误在哪里。
这就是我解决 R 问题的方法
我做了make project
并且它有效,但在此之前尝试检查清单中的包名称,重建并清理你的项目。如果问题没有解决,那就做你的项目
由于两个地方的 image.png 文件相同,我遇到了未解决的 R 问题。res>anim 中的一个和 res>drawable-hdpi 中的相同文件。这导致R变得未解决。我通过制作初始屏幕图像并直接将其从 Moray 图形目录重复移动到 Android 项目来创建问题。我一定是不小心把它放到了 res>anim 文件夹中。我通过从 res>anim 文件夹中删除重复的图像文件解决了这个问题,Android Studio 自行更正了。
- 类型 1:关闭项目并删除项目中的 .gradle 文件,然后重建项目
- 类型 2:如果类型 1 不起作用,则只需备份该 project9Zip 文件),然后删除该项目。然后提取压缩项目并导入提取的项目,它会完美运行,因为它适用于我。
你可以你delete
的一个layout files
(不管是哪一个),之后你需要build project
. 项目将构建,之后您需要通过CTRL+返回您的布局文件Z。就我而言,如果我在删除之前尝试构建我的项目layout file
,它对我没有帮助。但是这种方式是可以的。
此问题是由于“res”或“drawable”文件夹中的文件命名引起的。您不能使用任何大写字母来命名资源文件。所以,检查是否有任何这样的文件,并用小写字母重命名。
而且,你也可以试试这个:转到: 文件>无效缓存/重新启动
这些选项对我有用。
您只需要检查您的 Xml 文件。如果出现错误,则无法解决此错误。只需解决xml中的错误然后尝试。
或者
从 Build -> Clean 清理你的项目
看看 Gradle 控制台。就我而言,我包含了一个文件扩展名错误的资源。
AAPT: libpng error: Not a PNG file
:app:mergeDebugResources FAILED
FAILURE: Build failed with an exception.
重命名文件后,Sync Project with Gradle Files
一切都很好。
我正面临一个错误' Unable to resolve symbol R
'R 出现在红色的java 文件中。我已经解决了。
- 不要保存任何带有大写字母的图像,如 ABC.png。首先删除图像或重命名。
- 清洁项目
- 重建项目
大多数时候,这个问题是由 xml 文件引起的,看看 xml 文件,寻找任何错误。
在我执行“Build->clean project”和“Sync project with gradle”之后。他们俩都没有解决。我从 3.3.0 => 3.2.1 构建 gradle 版本(恢复为项目初始化状态),它解决了我的问题。
第一个解决方案
Rebuild your gradle or invalidate/restart your system.
第二种解决方案
delete .gradle and .idea folder from your android project. So you can solve "R" problem
并且还消除了没有任何理由发生的红线错误。
尽量确保完整的包名在第一行。假设您有一个名为 LoginActivity.java 的文件和名为 com.domainname.project 的包。
LoginActivity.java 的第一行应该是
package com.domainname.project;
这相当于在 dot.net 中指定“命名空间”。还要确保包与包含 *.java 文件的包匹配。
对我来说,重要的是说 Android Studio 一开始会给学习带来麻烦,但是就像这里有解决方案 Clean Project 可以解决这个问题,总是检查打包的名称,不要试图弄乱逻辑,我喜欢这个软件但有时我会尝试思考方法是否正确,我也喜欢 Linux,但对我来说,Android Studio 重写所有软件可能不会发生这种情况。总之祝你好运!!!!
//有时由于不完整的同步它会产生问题
//所以只需按照步骤操作,它肯定会完成您的工作
Click on Build->Clean Project and that will perform a gradle clean
我有同样的问题。我尝试了上面其他人提到的大部分内容,即 Gradle Sync、Validate cache and Restart、Clean and Rebuild project...重新启动 android studio 并且仍然遇到同样的问题...
我的问题在这里,我假设其他人可能有同样的问题。我在新创建的布局文件的名称上有空格...而不是file_example.xml我的是文件 _example.xml **(注意文件和 _ 之间的空格)**当您尝试查找对此布局文件的引用时您将遇到错误。
我建议您查看刚刚创建的最新布局文件,稍微重构名称,然后将您的R.layout更改为您的活动/片段中的新文件 --> 然后清理..重建 项目,项目将在没有任何内容的情况下编译错误。至少在我的情况下,这是我的问题的解决方案。
在我的情况下,原因是 res 文件夹中有一些名称包含大写字母的图像。
只需用小写字母重命名并重建
我看到这个问题可能会导致很多事情。就我而言,我在其中一个活动 *.xml 文件中有一些 textView。我以这种方式将文本放入编辑器中(稍后通过代码更改)"NAME: <here will be name>"
:显然,“<”和“>”字符破坏了从各个地方在我的项目中导入 R。我改变了它,它开始工作了。我只是忘记了我不能在 *.xml 文件中使用这些字符,因为它们构建了它的结构。记住这一点是值得的。
我正在做一个multi-module
项目。当我将所有 ui 代码移动到一个新模块时,这发生在我身上。
以下是我解决问题的方法:
我发现当我在 中创建新ui module
的时/res/values
,它会创建一个strings.xml
没有任何用处的新的。我删除了那个strings.xml
文件,rebuild
这个项目,它可以工作。
我想我有最终的解决方案。我做了一项研究,发现 Android Studio 讨厌安装路径或目录中的“空白”。它不接受放置在包含空格的目录中的 SDK。例如
C:\Program Files(x86)\Android\sdk
此目录无效,因为它包含空格。在这里,我已经回答了一个问题,一个人无法在 Android Studio 中更改他的 JDK 路径,因为他的 SDK 目录中有一个空白。这很奇怪,但似乎 Android Studio 讨厌带有空格的目录。所以解决方案是 -
将 Android Studio 和 Android SDK 安装在没有任何空白的目录或路径中。
例如 - 将 Android Studio 安装在
C:\AndroidStudio\
并将Android SDK安装在
C:\Sdk\
这两个目录都是有效的,因为没有任何空白。每个不包含空格的路径都是有效的。它还解决了其他问题,例如“无法解决:junit:junit:4.12”或“Gradle 同步项目失败”等。