想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。
在我引用 R.id.something
的所有类中的每个实例中,R
都是红色的,它表示“无法解析符号 R”。此外,每次出现 R.layout.something
时,都会用红色下划线表示“无法解析方法 setContentView(?)”。该项目始终构建良好。一直看到这种情况很烦人。我在这里阅读了许多其他关于类似但最涉及从 Eclipse 导入项目的问题。我正在使用我认为是最新版本的 Android Studio 并且该项目是使用 Android Studio 创建的,并且没有任何“无法解决 R”问题。如果有人知道,我想知道是什么原因造成的。
我也有这个问题。一个简单的 'gradlew clean' 和 'gradlew build' 就可以了。
单击 Build->Clean Project 将执行 gradle clean
在最新版本的 Android Studio 中,至少对我来说,以下工作:
“工具”->“Android”->“使用 Gradle 文件同步项目”
在最新的 Android Studio 3.1.3(2018 年 7 月)中,主菜单栏中提供了“使用 Gradle 文件同步项目”。
https://i.stack.imgur.com/fKCc0.png
我使用的是 gradle 3.3.0。这是罪魁祸首。浪费了我生命中的 6.50 小时。 Gradle 3.2.1 删除了该错误。
classpath 'com.android.tools.build:gradle:3.2.1'
更改 gradle 版本后问题解决。可以找到详细历史记录here。
3.2.1
实际上是唯一对我有用的解决方案......
我有一个类似的问题,这就是我所做的:
使用 Gradle 清理项目和同步项目,
https://i.stack.imgur.com/eJQc7.png
https://i.stack.imgur.com/uYTQZ.jpg
从 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
https://i.stack.imgur.com/yeyP5.png
检查您的 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 维护有关哪些文件依赖于哪些其他文件的信息。而且由于移动文件没有正确实现,移动文件会导致错误。这还不是全部:这些依赖项的缓存用于加速构建。
这意味着您不仅需要重新启动,还需要使这些缓存失效以恢复(或更准确地说,重建)健全性。
我想如果你把你的活动文件放到另一个文件夹而不是默认文件夹。您需要使用 R
将 com.example.yourproject.R
(这是您的项目 R
文件而不是 Android.R
文件)导入所有活动。例如,在 MainActivity
文件中插入这一行:
import com.example.yourproject.R;
这个问题似乎有很多原因。最近,我添加了一个名为 NewActivity 的活动进行测试。这创建了一个名为 res/menu/new.xml
的文件,而 gradle 不喜欢该名称,因为 new 是保留字。
毕业清洁
或者
“工具”->“Android”->“使用 Gradle 文件同步项目”
这些绝对是值得尝试的好东西,但在运行这些命令之前,您可能需要解决一些其他问题。
R.java 文件包含 xml 和 java 页面之间的链接。只有当您的某些资源文件出现问题时,才会出现“R 无法解决”。所以最好和有效的方法是删除res文件中最后完成的xml或drawable。然后根据android编码规范再次从那里开始。这是唯一的方法。有效且正确的方法。
还可以使用 Git 来正确跟踪代码。 ..
你的代码只是被打乱了。答案相当简单。
只需转到构建 --> 清洁项目。
这应该够了吧。
还要检查您的 Android Studio 版本。
我目前正在使用 Android Studio 3.0.1。
您最近是否更新了您的 SDK 工具?启动 android SDK 管理器并确保您拥有最新的 SDK 工具,该工具现在与平台工具分开。当我第一次更新我的 SDK 管理器时,我遇到了同样的问题,直到我关闭并重新打开 SDK 管理器,SDK 构建工具包才显示安装/更新。
我必须在 android studio 中导入我的 R
包。例如:import com.example.<package name>.R
import com.example.old-package-name.R
,所以我不得不重命名导入。
您应该做两件事,首先清理项目(在构建菜单中) - 它删除可能是罪魁祸首的构建目录:
https://i.stack.imgur.com/cvHwL.png
接下来,将项目与 Gradle 文件同步(在文件下):
https://i.stack.imgur.com/2lxyP.png
这是 Windows 10 上 Android Studio 3.6.1 中项目的位置。
如果一切都失败了,无效缓存和重新启动(在文件下)通常可以解决问题。在我看来,这会关闭整个程序并花费最多的时间。
https://i.stack.imgur.com/97Oin.png
澄清一下,我在 Windows 10 上运行它,但它也应该在 MacOS 和 Linux 上运行。
https://i.stack.imgur.com/hvdVL.png
问题将得到解决。
我有这个
我的可绘制资源中的大写字母。导入由Android Studio(或Eclipse)添加的Android.R xml文件中的错误
Build->Clean Project
我最近遇到了这个问题,而清理/构建等并没有解决它。我猜我在某个地方遇到了问题,但不确定在哪里可以找到它(是在清单、资源 xml 文件等中吗?)。
当出现问题时,您可以通过运行代码分析来找出问题所在。
从顶部的菜单中选择:
分析 -> 检查代码,使用“默认”配置文件扫描整个项目。
您的检查结果将包含一个名为“Android”的元素。在这里,您将获得导致资源和清单文件出现问题的任何内容的列表。这些错误将打开生成的 xml 文件,这些文件将以红色显示任何错误。
我的确切问题是由于我使用基于风味的清单文件而导致的,并且我意外地在风味的 <application>
标记内复制了一些权限。
https://i.stack.imgur.com/VCyc5.png
更新:在修复后 Android Studio 仍然显示错误之后,我确实遇到了一个问题,即使我现在可以在错误仍然存在的情况下构建并运行得非常好。 (我正在运行一个金丝雀版本,所以现在把它放下)
当我手动重命名我的应用程序的域文件夹时,我遇到了这个问题。为了解决这个问题,我不得不
在 AndroidManifest.xml 中设置正确的
文件菜单-> 使缓存无效/重新启动...
一旦 Android Studio 重新启动并构建新索引,问题就会消失。
import com.Neue.Package.R;
导入 R
我遇到了同样的问题: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
这是一个非常古老的问题,但它仍然经常发生,并且这里没有真正全面的答案。
我遇到这个问题的次数比我想承认的要多。它可能是由各种各样的问题引起的,这些问题大多与您的项目结构不符合预期有关。这是我遇到的所有问题的列表:
从 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 顶部菜单列表。单击构建菜单,在构建下单击重建项目。
https://i.stack.imgur.com/5tmuZ.png
对于这个问题,我有一个特殊情况。
在我的项目中,一切顺利,可以编译构建成功,但是在我的Android Studio IDE中(我也尝试过Intelligent IDEA,他们的情况相同)R.java文件无法很好地解析并且总是下降到红线。
https://i.stack.imgur.com/ntmYS.jpg
这几乎让我发疯,我在编程时无法忍受读取颜色。
最后我发现这个棘手的问题是由我的 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,红色消失,我又可以愉快地编程了。
构建 > 清理项目
这对我有用。有几次同样的问题,这似乎是正确的。除非您更改了某些内容或调用了变量 R。这个问题通常会突然发生,当它发生在我身上时,所以我想它只是 Android 工作室吓坏了。哈哈
祝你好运,祝你的项目好运。
执行:构建 > 清理项目
重要提示:确保在消息窗格 (Alt+0) 中清理项目后没有任何错误。如果您发现任何带有感叹号的红色圆圈,则必须删除代码中的这些错误。
这些错误大多与@string/ 或@array/ 有关。再次清洁项目并完成!
我有同样的问题,当我创建一个新项目时会发生这种情况。
我要做的是:
检查 SDK 更新
然后android studio更新,
然后重新打开项目
打开 andoridmanifest.xml
擦除 android:label 中“_>”之间的空格并保存。
这对我行得通。
我自己很难解决这个问题。
确保您的 layout.xml 文件中没有错误。
转到构建 > 清理项目
它对我有用,希望它也对你有用。
我有同样的问题,大多数时候它是由
将项目与 gradle 文件同步
做构建 - >清理项目
执行文件-> 使缓存无效
但这一次,即使做了所有这些事情,错误仍然存在,最后我找到了罪魁祸首。
问题出在 xml 文件 中,我在其中为 android:id
提供了普通字符串值,而不是 id 资源类型。
错误
android:id="username"
更正
android:id="@id/username"
在 xml 文件中弄乱与资源相关的内容是导致此错误的主要原因。请注意,它可能不会在 xml 布局文件中显示为错误。
笔记
在大多数情况下,编译器会在消息中向您显示错误的来源。在尝试其他解决方案之前先尝试检查它
`我有同样的问题,它通过以下方式解决:
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.`
这种表示法似乎工作正常。
android:id="@+id/viewID"
Android Studio 的设计面板似乎不太好用。
同样的问题。当我在我的可绘制文件夹中添加一些图像并尝试访问它们时开始。此外,添加的图像具有大写字母的扩展名。这似乎使构建崩溃,因为即使我重命名它们,消息也是相同的,并且 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 神奇地重新出现了。
导致此错误的原因有很多。
有时会发生替换保持相同名称的图像文件。假设您从布局 .xml 中删除了一个项目,例如 ,但它仍然在任何 Activity 或 Fragment .java 中声明。还有很多。
跟踪错误的最佳方法是重建它而不是干净或同步做一些故意的错误。
如果它不能解决您的问题,那么必须存在一些缺陷或运行时错误或由于资源使用不当而发生的错误,可能是您的代码或设计中的 java 或 xml 文件,这迫使 gradle 停止,因为(R )esource 文件无法正确索引您的资源,您必须承认这一点。
如果您的项目在您进行更改之前运行,则注释掉您所做的更改并尝试重建项目。
它肯定会起作用,因为不会有任何变化。
要追踪确切的错误,请通过将更改分解为更小的模块来检查更改。
例如 - 如果您通过单击按钮并在适配器中插入列表值使列表可见,请首先检查您是否能够使其可见,然后检查适配器错误。
不定期副业成功案例分享