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

67
我今天升级了Android Studio到3.1版本,现在它显示大多数资源(例如styles.xml中的ThemeOverlay或?attr/actionBarSize)无法解决符号。目前看来这并没有阻止我构建或在模拟器中运行,但这些错误让我感到不安。
有其他人遇到过这个问题吗?我该如何解决它?我尝试同步gradle和清理我的项目,但似乎都没有帮助。
有什么想法吗?
我正在使用Android Studio 3.1,Gradle版本为4.4,Gradle插件为3.1.0。
编辑:此问题影响更新到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版本中,我们也遇到了这个问题! - LOG_TAG
在3.1.2版本中,以下相同的问题无法正常工作,该怎么办? - giveJob
@HemanthSP 在将 Android Studio 更新到 3.1.2 版本后,关闭并导入项目对我有用。 - JPM
我尝试了100种方法,但都没有起作用。 - giveJob
1
尝试这个:https://dev59.com/YFkR5IYBdhLWcg3w0AKy#50114143 - M D P
16个回答

166

关闭项目并重新导入。对我今天有效。

导入项目


63
清空缓存、手动删除gradle缓存和其他技巧都没用。关闭项目并重新导入它就可以了。哇!我期待Android Studio 4.0,也许它会烧掉我的房子。 - BenjaminButton
7
在欢迎界面中打开一个已存在的 Android Studio 项目也是可行的。 - Andy Sander
3
我关闭并重新打开了一个已有的 Android Studio 项目(没有导入它),结果它能正常工作! - Andrew Glukhoff
1
FYI,我将Android Studio从3.1更新到3.1.1,问题重新出现了。但是这个答案仍然有效,所以我更新了帖子。 - JPM
11
为什么这个有效? - AndrewPK
显示剩余6条评论

20

支持库不同步。

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

  1. 打开您的应用程序模块的 build.gradle 文件。
  2. 注释掉支持库的 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
    
  3. 将您的项目与Gradle同步。现在你会遇到一些错误,不用担心。

  4. 取消注释之前注释掉的implementation行。

  5. 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
    
  6. 再次使用Gradle将您的项目同步。

现在应该不会再出现“无法解析符号”错误。在不同的项目中,这对我已经有效多次。

注意:

  • 如果您的项目有多个模块,则需要同时为所有模块遵循上述说明。

1
这对我实际起作用了...关闭项目并重新导入没有。 - Hugo Allexis Cardona

19

将项目关闭再重新以已有的 Android Studio 项目形式打开


10
升级Android Studio后,您可以使缓存无效并重新启动。
文件 > 使缓存无效 / 重新启动... introducir la descripción de la imagen aquí

谢谢Jorgesys,但这对我也不起作用。 - JPM
1
有史以来第一次,简单的解决方案真正奏效了!谢谢。 - AhabLives
@AhabLives 我希望在未来的AS版本中,这个问题能够得到解决,但现在只需要清除缓存并重新启动即可。 - Jorgesys
1
经过尝试多种解决方案,最终对我有效。 - Kislingk

3
英译中:

出于某种原因,这些属性在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,而且你的文件看起来与我的相似。 - JPM
好的,这里猜测一下,是要构建/重新构建项目吗?还需要清理吗? - cutiko
谢谢cutiko。我已经尝试过那个了,也没有帮助。 - JPM

2

仅仅重新导入项目对我没有用。

我的解决方案是:

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

更多信息请参考以下截图:

1st solution

或者

2nd solution


2
关闭项目,然后作为现有项目重新打开可以起到奇效!

1
这个对我起作用了!令人惊讶的是。虽然代码之前已经编译得很好,但红色下划线太让我烦恼了。谢谢你。 - Aguragorn

1

我将现有的Android Studio项目关闭并重新打开(没有导入),这样就可以了!感谢Andrew Glukhoff的评论。


1

您可以尝试关闭项目并退出Android Studio(仅关闭和重新导入无法解决问题)。启动Android Studio并再次打开项目。这对我有效!


0

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

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

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

关闭并导入项目,如其他答案所建议的那样,没有起作用,这是合理的,因为根本问题没有得到解决。

然而,尽管看起来过去这种方法对其他人没有用,但根据SO上的其他问题和答案,从drawable文件夹中删除新图像确实有效。

同样,更好的解决方案是将图像重命名以删除Android不喜欢的任何字符,然后进行清理和/或重建项目。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接