Android Studio将R标记为红色,并显示错误消息“无法parsing符号R”,但构build成功
在我试图在Android Studio中创build的每个项目中,R的所有用法都标记为红色,并显示错误消息“无法parsing符号R”,但编译成功,应用程序运行。 这真的很烦人,因为它会阻止自动完成,并在我的代码中显示巨大的红色波浪线。
我正在运行Android Studio 1.7.0并使用默认设置创build项目。 附上截图:
这是我的build.gradle
:
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } apply plugin: 'android' dependencies { compile files('libs/android-support-v4.jar') } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 16 } }
这就是项目结构的外观:
任何想法如何解决这个问题?
只需点击Android Studio中的Build – > Rebuild Project选项。
我发现这个问题是由于我的XML文件中有错误而引起的。 一旦你解决了XML错误,做一个清理/构build,它解决了这个问题。
点击Build -> Rebuild Project
,然后点击Tools -> Android -> Sync Project with Gradle Files
。
确保你的AndroidManifest.xml
包名是正确的。 当我的R.whatever
被标记为红色的时候,这就解决了我的问题。
我也build议检查所有的gradle
文件,以确保这些包名称是正确的。 这不应该让一切都变红,但它会阻止你的gradle
文件正确同步。
- select文件>项目结构菜单选项。
- 按消息框上的确定(项目结构更改不更新build.gradle)。
- 在“项目设置”侧面板上select“模块”。
- 对于每个模块(项目),检查“排除的文件夹”部分不包含“生成”文件夹。 如果是这样,请按下“build”文件夹旁边的“x”button。
- 按OK
您现在应该看到“MyAppProject / MyApp / build / source”文件夹。 这应该包含“r”文件夹(生成R.java文件的位置)。 在这里,你应该看到蓝色的“debugging”,“释放”(如果你的build.gradle中有一个projectFlavour,它们将在“”文件夹下)。 在该debug / release文件夹中应该是你的应用程序的包名,然后是一个包含所有资源ID的R.java文件。
由于某些原因,Android studio对编辑器和编译器使用不同的configuration。 如果它适用于编译器,那么它是好的。 如果它不适合编辑。 (它看到未解决的文件)。
您需要添加一些目录到您的项目的来源。 例如,所有的资源都应该标记为“源”。
文件 – >项目结构
select“模块”,然后select你的项目。 然后selectsources
标签。 在右侧find你的资源目录,然后点击蓝色的“源”button。 closures所有,它应该工作。
另外,你必须确保
build/source/r/debug
也是一个源码。 在我所有的生成build/source/*/debug
标记为源。
主模块.iml
<?xml version="1.0" encoding="UTF-8"?> <module external.system.id="GRADLE" type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="android" name="Android"> <configuration> <option name="SELECTED_BUILD_VARIANT" value="debug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> </configuration> </facet> <facet type="android-gradle" name="Android-Gradle"> <configuration> <option name="GRADLE_PROJECT_PATH" value=":SherlockHolmes" /> </configuration> </facet> </component> <component name="NewModuleRootManager" inherit-compiler-output="true"> <exclude-output /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/build/source/r/debug" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/debug" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/build/source/rs/debug" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/debug" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/build/res/rs/debug" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/build/source/r/test" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/test" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/build/source/rs/test" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/test" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/build/res/rs/test" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/aidl" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/assets" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/res" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/resources" isTestSource="true" /> <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/exploded-bundles" /> <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/symbols" /> <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> </content> <orderEntry type="jdk" jdkName="Android 4.2.2" jdkType="Android SDK" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Sherlock.aar" level="project" /> <orderEntry type="library" name="SlidingMenu.aar" level="project" /> <orderEntry type="library" name="support-v4-13.0.0" level="project" /> </component> </module>
项目iml
<?xml version="1.0" encoding="UTF-8"?> <module external.system.id="GRADLE" type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="android-gradle" name="Android-Gradle"> <configuration> <option name="GRADLE_PROJECT_PATH" value=":" /> </configuration> </facet> </component> <component name="NewModuleRootManager" inherit-compiler-output="true"> <exclude-output /> <content url="file://$MODULE_DIR$"> <excludeFolder url="file://$MODULE_DIR$/.gradle" /> <excludeFolder url="file://$MODULE_DIR$/build" /> </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> </component> </module>
黑魔法
不知道这一个,但我听到它的工作,而我很确定它不应该改变任何东西。 在评论所有需要R
行之后,尝试编译并保存项目。 那么当一切都不红。 尝试添加回来。 奇怪的是你的构build/源不会生成。
此外这个问题build议检查“编译器使用外部构build”
Android Studio不会为我的导入项目生成R.java
边注
还要确保在你的java代码中没有。 import android.r;
从你所显示的一切看起来都很好。 奇怪的是,构build/源没有被创build。 例如,我没有构build/ apk。 可能是你在发布模式,它不会创build这些目录。
这是我的临时解决scheme,直到我find一个更好的:
-
使用Everything,findR.java创build的地方。 在我的情况下,它是
C:\Program Files (x86)\Android\android-studio\system\compiler\<project-name>.cb969c52\.generated\aapt\<module-name>.6badd9a4\production\com\<project-name>\<module-name>
-
在项目视图中,单击该模块并按F4。 忽略警告。
-
点击“+添加内容根”并select上述文件夹。 确保它被标记为蓝色(作为来源)。
我这样做后,突然所有的警告消失了。 问题是,如果你与其他人协作,每台机器上的文件夹名称是不同的,所以在同步时要小心。
- 重build项目。
- 如果(1)不起作用,请重新启动Android Studio / Eclipse。
如果两者都不起作用,请检查所有的xml文件。 当您的xml文件不正确时,会发生此错误。
这对我工作:
-
closures并重新打开项目
-
如果Gradle无法第一次同步,按下“与Gradle文件同步项目”(位于顶层菜单中的AVDpipe理器图标旁边)重复1-2。 (我的第二次工作)。
使用Android Studio 1.2.2
前几天我有这个bug,我试过四处寻找,直到我决定重新安装Android Studio。 它为我工作。
您需要导入您的项目R文件
import <YOUR-PROJECT-PACKGENAME>.R;
这个错误发生在我身上,因为在我的activity_main.xml文件中有一个无效的input。
当您尝试构build或清理项目时,您将看到错误消息 。
我通过阅读这些错误信息解决了我的问题, 更正了我的xml文件中的错误。 然后重build项目 。
从示例创build项目时,如果不导入现有项目是好的(防止与gradle,.idea,.iml,build,jar和apks,即所有不需要的生成生成文件的冲突),则在创build新项目之后,复制并粘贴所有相关资源,我build议:
检查包和从项目{AndroidManifest声明和所有import的Java类},所有资源(可绘制,MIP地图,布局和菜单和您的build.gradle(与最新的sdk使用build.gradle的样品)可以根据请求提供)),看看他们是否存在,如果声明的string和ID实际上存在和已经使用,之后,你唯一的错误应该是问的问题:
Bulid-> Clean Project
工具 – > Android->与Gradle文件同步项目
文件 – >使caching失效并重新启动
在最坏的情况下重新启动你的机器有帮助
以上应该工作。 如有必要,随意提出问题,即发表评论。
只要去Android的顶部菜单列表。 点击Build菜单,在Build下点击Rebuild Project 。
这主要是因为xml文件中的错误,请检查您最新的xml更改并重build它,与我同样的问题。
通过手动清理文件夹.idea /库,然后点击“使用Gradle文件同步项目”,解决了这个问题。 显然,这个同步不会删除元素,但保留旧的和添加当前的。 可能是一个错误报告:)
有与android工作室相同的问题,我发现build / generated / source / r只包含释放文件夹而不是debugging。 所以出于某种原因debugging版本没有生成可用的R类。
我通过打开项目iml文件解决了这个问题,并修复了这一行
<option name="RES_FOLDERS_RELATIVE_PATH" value="" />
至
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
使用gradle重新生成,使用R注释掉行,运行debugging生成R,未注释的行使用R并再次运行debugging,修复。
解决scheme很简单:
转到File > Project Structure > app
然后selectFlavours
选项卡,在Min Sdk Version
的下拉列表中selectAPI 21: Android 5.0 (Lollipop)
。
清理项目在我的情况帮助
去
Build -> Clean Project
如果您收到此错误,请清理您的项目。
- 去build立你的android工作室之上
- select清洁项目的选项
这背后的原因是,通过清除您的系统上的android studio项目文件夹中存在的以前的.apk
文件被删除。
有时候这些构build错误将会无处不在。 如果这发生在你身上,试试这个:
重新检查资源文件中XML的有效性如果您的R.java文件没有为最后一个版本生成,您将在您引用资源的任何地方看到错误。 这可能是由您的某个XML文件中的拼写错误造成的。 布局XML并不总是得到validation,所以这些文件中的拼写错误可能不会被有针对性地引起您的注意。 find拼写错误并保存文件应导致R.java重新生成。
清理你的项目! select生成→清理项目。 这将从头开始重build项目,这可能会导致无错误的构build。
同步您的项目与Gradle! select工具→Android→使用Gradle文件同步项目。 Android Studio将使用正确的项目设置从头开始重build项目,这有助于在更改Gradleconfiguration后解决问题。
运行Android Lint !!! 林特可能会给你一个关于问题的好消息。 如果上述不起作用,这是你最有可能find你的问题的地方。 要运行Lint,请selectAnalyze→Inspect Code …,然后selectWhole project,然后selectOK。 仔细分析Lint的build议; 从错误开始,然后发出警告。
祝你好运。
我解决了它:
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.
我遇到了同样的错误,结果是清单文件有一些错误。 修复后,再次点击Make Project,它工作正常。 Android工作室有时不会给出非常有用的错误消息。
我偶尔会被这个问题困扰,还有一件事要尝试:将你的compileSdk和buildSdk版本匹配到最新版本。
我把compileSdkVersion从21改回到19,因为Android Studio(1.1 canary channel)debugging器没有正确地跟踪预构build的库。 我发现它似乎是基于buildToolsVersion(19.1.0)的跟踪,我通过单击堆栈跟踪中的错误(然后select19而不是21)来validation。 虽然我直接在build.gradle文件中更改了它,但graphics演示在这里: https ://www.blogger.com/comment.g?blogID=4722727826918942842&postID=3875998513888772255我将总结:
- 在Android Studio IDE中,selectFile | 项目结构。
- select你的模块,像“应用程序”
- 在Compile SDK字段中,select最新版本
- 也可以selectBuild Tools中的最新版本
确认,项目应该自动同步正确。
我从中得到的教训是,它们应该是相同的。
对我来说,当我把我的一个原始资源的名字从extra
extra.jet
,我遇到了这个问题,于是所有的R
变成了红色,而且不会生成。 我尝试了所有上述的解决scheme,没有任何工作,然后我试图用原来的名字extra
副本,并从android工作室删除它然后R
恢复正常,并build立成功。
在我的情况下,我遵循我可以在Stackoverflowfind的所有答案,他们都没有解决这个问题。 所有的答案将指向一个可能的XML文件损坏或与Gradle名称冲突。 有些答案声称有必要清理项目或使用Gradle文件同步项目。 这些解决scheme都不能解决问题。 另外,一旦我按照关于如何构build一个Hello World应用程序的教程,我只是在没有任何编码的情况下遵循了Android Studio向导窗口,就没有任何意义怀疑这是一个类似这样的错字。
TLDR
问题原来是构build工具版本。 我被设置为23.0.0 rc1 ,所以我将其更改为22.0.1 。 我想这是因为我正在使用Android Available的最新版本。
要更改此值,您可以在左侧窗口中打开项目浏览器>右键单击“应用程序>打开模块设置”,然后在“属性选项卡”
我从训练网站使用练习文件时遇到了同样的问题,并尝试通过卸载android studio并删除所有关联的目录并重新安装它,但没有得到任何结果。 不过,我注意到,我正在查看的教程存储在DESKTOP练习文件,而我的DOWNLOADS目录中的文件夹,所以我简单地复制所有锻炼文件到我的桌面; 这使得我的练习文件夹结构与教程创build者的结构完全一样,这就实现了。
在大多数情况下,你的资源,即布局,样式等有一些问题,所以试图find并解决你的资源问题,然后清理你的项目。
解决此问题的更好方法是重新启动您的Android Studio。 如果你不想重启,那么点击Build -> Clean Project
。
我也有这个问题。 我从我的项目的可绘制文件夹中删除了额外的图像。