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

Android Studio 3.1 Cannot Resolve Symbol (Themes, Widget, attr, etc.)

我今天将 Android Studio 升级到 3.1,现在 Android Studio 说它无法解析大多数资源的符号(例如 ThemeOverlay in styles.xml?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.但是,下面的答案仍然有效。

出于某种原因,在 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.属性

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(应用程序)

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'
}

升级AndroidStudio后,可以使缓存失效重启

File > Invalidate Caches / Restart…

关闭项目并重新导入。今天为我工作。

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

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

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

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

支持库不同步。

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

  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 行。

    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
    
  5. 再次将您的项目与 gradle 同步。

"Cannot Resolve Symbol" 错误现在应该消失了。这在不同的项目中对我有用过几次。

备注

  • 如果您的项目有多个模块,那么您需要一次对所有模块执行上述说明。
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'

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

我的解决方案是

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

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

对我来说,同样的 symptom/error 是由于将新图像拖放到 'drawable-xxhdpi' 文件夹中导致的,该文件夹的名称 Android Studio 不喜欢 - 例如数字或大写在名字里。

仅 'cannot resolve symbol R' 消息没有给出有用的错误消息。

即使在同步应用程序并清理和重建项目后,问题仍然存在,即 'R' 未被识别且未指示其他错误。

按照其他答案中的建议关闭并导入项目无效,考虑到根本问题,这是有道理的。

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

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

示例

setContentView(R.layout.activity_login_ativity);

  1. 将光标放在R中
  2. 单击 Alt+Enter
  3. 选择导入class R

为我工作:)

我是怎么解决的。:

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

  1. 已从 Android 工作室欢迎页面中删除。

  2. 再次打开项目。

对我有用。

问题#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构建完成,然后瞧!

我将我的 gradle 版本更新到 4.10.1 并做了 "fix and reimport"。之前.idea下没有libraries文件夹。然后成功了

当我更新到 com.android.tools.build:gradle 3.3.1gradle-4.10.1

时出现类似的错误

我尝试了以下方法但没有用:

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

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