Android Studio 3.1 无法解析符号(主题、小部件、属性等)

Posted

技术标签:

【中文标题】Android Studio 3.1 无法解析符号(主题、小部件、属性等)【英文标题】:Android Studio 3.1 Cannot Resolve Symbol (Themes, Widget, attr, etc.) 【发布时间】:2018-09-06 11:27:28 【问题描述】:

我今天将 android Studio 升级到 3.1,现在 Android Studio 说它无法解析大多数资源的符号(例如 styles.xml?attr/actionBarSize 中的 ThemeOverlay)。到目前为止,这似乎并没有阻止我在模拟器中构建或运行,但这些错误让我感到紧张。

还有其他人遇到过这个问题吗?我该如何解决它?我尝试过同步 gradle 并清理我的项目,但似乎没有任何帮助。

有什么想法吗?

我正在使用带有 Gradle 版本 4.4 和 Gradle Plugin 3.1.0 的 Android Studio 3.1

编辑: 此问题会影响更新到 Android Studio 3.1.1、3.1.2、3.1.3、3.1.4 以及 Gradle 插件到 3.1.1、3.1.2、3.1.3 和 3.1.4。但是,下面的答案仍然有效。

【问题讨论】:

在 3.1.1 中我们也得到了这个! 在 3.1 中。以下 2 个相同的问题不起作用,该怎么办 @HemanthSP 在将 Android Studio 更新到 3.1.2 后关闭和导入项目对我有用。 我试过 100 种方法都不管用 试试这个:***.com/a/50114143/2855059 【参考方案1】:

由于某种原因,这些属性在 26 个库中不再存在。要增加这些库,您还必须将 compileSdk 增加到 27。 您可能还必须下载 sdk 27​​

短版,以下是应用`graddle``

android 
    compileSdkVersion 27
    //...


dependencies 
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support:design:27.1.0'
    //...

长版,请检查以下所有文件:

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

build.gradle(项目)

buildscript 

    repositories 
        google()
        jcenter()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:3.1.0'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    


allprojects 
    repositories 
        google()
        jcenter()
    


task clean(type: Delete) 
    delete rootProject.buildDir

最后是 build.gradle (app)

apply plugin: 'com.android.application'

android 
    compileSdkVersion 27
    defaultConfig 
        applicationId "cl.cutiko.testingupdate"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    


dependencies 
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:27.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

【讨论】:

感谢 cutiko,但不幸的是,这对我没有帮助,因为我已经在使用 API 27,而且您的文件看起来与我的相似。 好吧,猜猜看,构建/重建项目?还干净吗? 谢谢cutiko。我已经试过了,但也没有用。【参考方案2】:

升级Android Studio后,可以使缓存失效并重启。

File > Invalidate Caches / Restart…

【讨论】:

感谢 Jorgesys,但这对我也不起作用。 有史以来第一次 - 简单的解决方案真正奏效了!谢谢。 @AhabLives 我希望在 AS 的未来版本中可以解决这个问题,但现在使缓存无效并重新启动就足够了。 在尝试了几种解决方案后,它终于对我有用了【参考方案3】:

关闭项目并再次导入。今天为我工作。

【讨论】:

使缓存失效、手动删除 gradle 缓存和其他技巧都不起作用。关闭项目并再次导入它工作。哇!我很期待 Android Studio 4.0。也许它会烧毁我的房子 打开现有的 Android Studio 项目也适用于 Welcome to Android Studio。 我关闭并重新打开项目作为现有的 Android Studio 项目(没有导入它),它工作! 仅供参考,我将 Android Studio 从 3.1 更新到 3.1.1,问题再次出现。但是这个答案仍然有效,所以我更新了帖子。 为什么会这样?!【参考方案4】:

作为现有 Android Studio 项目关闭并重新打开项目

【讨论】:

【参考方案5】:

关闭一个项目,然后像现有的一样打开一个项目真是太棒了!

【讨论】:

Aaaaand... 这对我有用!出奇。虽然代码之前已经编译得很好,但红色下划线让我很恼火。谢谢大佬。【参考方案6】:

您可以尝试关闭项目并退出 Android Studio(仅关闭并重新导入它对我没有用)。启动 Android Studio 并再次打开项目。这对我有用!

【讨论】:

【参考方案7】:

我关闭并重新打开项目作为现有的 Android Studio 项目(没有导入它),它工作!感谢Andrew Glukhoff 的评论。

【讨论】:

【参考方案8】:

支持库不同步。

发生此错误是因为支持库与您的项目不同步。要使其重新同步,您可以执行以下步骤:

    打开您的应用模块的 build.gradle 文件

    注释掉支持库的implementation 行。对我来说,它看起来像这样:

    //implementation 'com.android.support:appcompat-v7:27.1.1'
    //implementation 'com.android.support:recyclerview-v7:27.1.1'
    //implementation 'com.android.support.constraint:constraint-la
    

    将您的项目与 gradle 同步。你现在会有一些错误。不用担心。

    取消注释您之前注释掉的 implementation 行。

    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-la
    

    再次将您的项目与 gradle 同步。

“无法解析符号”错误现在应该消失了。这在不同的项目中对我有用多次。

注意

如果您的项目有多个模块,那么您需要一次性按照上述说明操作所有模块。

【讨论】:

这实际上对我有用...关闭项目并重新导入没有。【参考方案9】:
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.android.support:design:26.1.0'

在 build.gradle(project) 中使用上述更新您的依赖项

并将以下代码放入 build.gradle(Module:app)

classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'io.realm:realm-gradle-plugin:3.7.1'
classpath 'com.google.gms:google-services:3.1.0'

【讨论】:

【参考方案10】:

再次导入项目对我不起作用。

我的解决方案是

    删除项目中的.idea文件夹。 然后通过 File> Close Project 关闭项目 然后通过File> New > Import Project OR从欢迎屏幕Import Project (Gradle, Eclipse ADT, etc.)导入项目。

查看屏幕截图了解更多信息

或者

【讨论】:

【参考方案11】:

对我来说,同样的症状/错误是由于将新图像拖放到“drawable-xxhdpi”文件夹中而导致的,其名称为 Android Studio 不喜欢 - 例如名称中带有数字或大写字母。

没有给出有用的错误消息,只是“无法解析符号 R”消息。

即使在同步应用程序并清理和重建项目之后,问题仍然存在,即无法识别“R”并且没有指示其他错误。

按照其他答案中的建议关闭和导入项目不起作用,考虑到根本问题,这是有道理的。

但是,尽管过去似乎这对其他人不起作用,但从 SO 上的其他问题和答案来看,从可绘制文件夹中删除新图像确实有效。

同样,一个更好的解决方案显然是重命名图像以删除资源名称中 Android 不喜欢的任何字符,然后进行清理和/或重建项目也有效。

【讨论】:

【参考方案12】:

例子

setContentView(R.layout.activity_login_ativity);

    将光标放在R中 点击 Alt+Enter 选择导入类 R

为我工作:)

【讨论】:

您能否改进对答案的解释?否则这篇文章似乎没有为问题提供quality answer。请编辑您的答案,或将其作为对问题的评论发布。【参考方案13】:

我是如何解决的。:

我将 Android studio 更新到 3.2 版本,两步解决了这个问题。

    已从 Android Studio 欢迎页面中删除。

    再次打开项目。

为我工作。

【讨论】:

【参考方案14】:

问题 #1

我的问题与我如何使用 Android 插件的 alpha/beta 版本有关

File > Project Structure > Project

检查您的Android Plugin Version

我使用了一个叫做3.3.0-beta的东西,但在另一个项目中3.1.0-alpha

将其更改为 3.2.0 似乎解决了我的问题,不要忘记也更改 build.gradle(Project) 中的那个

问题 #2

我的一个 .xml 文件有错误。我错过了@string 资源。请检查你所有的 xml 文件,并确保它们都是正确的(打开一个 xml 文件应该会激活 Android Studio linting,滚动文件,如果有问题,它应该会以红色提示)

问题 #3

build.gradle 我导入了不同版本的android 支持库。例如

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:27.1.0'

请确保它们是相同的版本。并确保 Android Studio 不会在您的 gradle 依赖项中抱怨任何内容。可能是您的某些依赖项还导入了不同的 android 支持库版本。

在 #1、#2 和 #3 之后采取的步骤

清理你的项目Build > Clean Project

使缓存失效并重启File > Invalidate Caches / Restart

重启后,等待 gradle build 完成,然后瞧!

【讨论】:

【参考方案15】:

我将我的 gradle 版本更新为 4.10.1 并进行了“修复并重新导入”。 .idea 下没有库文件夹。然后就成功了

【讨论】:

【参考方案16】:

当我更新到 com.android.tools.build:gradle 3.3.1gradle-4.10.1 时出现类似错误

我尝试了以下方法,但没有成功:

    Clean Project - Rebuild Project Invalidate Caches / Restart 检查.xml错误(我没有发现任何关于xml的错误) 修改.iml文件

我通过修改 com.android.tools.build:gradle 3.2.1Restart my mac 修复了这个错误,我不知道哪个可以修复它,但它确实对我有用。

【讨论】:

以上是关于Android Studio 3.1 无法解析符号(主题、小部件、属性等)的主要内容,如果未能解决你的问题,请参考以下文章

无法解析符号'setOnClickListener' - Android Studio

Android Studio:无法解析符号 R [重复]

Android Studio 无法解析符号“TabLayout”

无法解析 Android Studio 上的符号“属性”

RecyclerView“无法解析符号”错误,-Android Studio

Android Studio 突然无法解析符号