【问题标题】:Cannot resolve symbol '?attr/actionBarSize' after updating Android Studio from 2.3 to 3.0 for buildToolsVersion '26.0.2'将 Android Studio 从 2.3 更新到 3.0 以获取 buildToolsVersion '26.0.2' 后无法解析符号 '?attr/actionBarSize'
【发布时间】:2018-04-12 02:18:37
【问题描述】:

将 Android Studio 从 2.3 更新到 3.0 后,我将 buildToolsVersion 从 26.0.0 更改为 26.0.2,然后我收到此错误:

Cannot resolve symbol '?attr/actionBarSize

Xml 代码:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:titleTextColor="@android:color/white"/>

依赖关系:

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'

【问题讨论】:

  • 也许你已经升级了gradle的版本。
  • 尝试点击 Build > Clean Project

标签: android android-layout android-actionbar android-studio-3.0


【解决方案1】:

没有任何帮助,但正在改变:

?attr/actionBarSize?android:attr/actionBarSize 完成了这项工作。

这实际上是几个版本中的错误。即使你不修复它,Android 也会在运行时自动修复它。

【讨论】:

  • 我认为?android:attr/actionBarSize只兼容api 21,?attr/actionBarSize需要为Android Studio安装pre-21 sdk才能看到。对我来说另一个问题是确保 compileSdk 和支持库具有相同的主要版本号(在我的情况下为 27)
  • 嗯,看起来有点神奇,但确实有效。我希望看到一个明确的解释,准确描述各种 sdk 的哪些问题以及哪些内容有效以及为什么。
  • 这似乎是一个错误,因为项目编译和构建没有问题。
【解决方案2】:

将所有库版本更新为26.1.0(更新到最新版本)并添加:

compile 'com.android.support:support-v4:26.1.0'

如果您使用的是 Android Studio 3.0.0 及更高版本,请使用

implementation 'com.android.support:support-v4:26.1.0'

同步您的项目,错误将自动解决,因为?attr/actionBarSizev4 库的一部分。

【讨论】:

  • 指定您正在谈论的库版本
  • 我不得不改变:实现 'com.android.support:support-v4:26.1.0' 来编译 'com.android.support:support-v4:26.1.0'
  • 现在使用implementation 而不是compile
  • 我认为这个答案不应该是选择的答案。因为它强制您在不需要时使用 support-v4 库。您可以 Sid 和 Victoria Klimova 的答案是最好的答案,您可以轻松避免在项目中使用不必要的库...
  • 这个答案甚至没有帮助我。 Sid 的回答有帮助,但我不明白为什么我已经添加了android 命名空间xmlns:android="http://schemas.android.com/apk/res/android" 时还需要android: 前缀有人知道吗?
【解决方案3】:

在项目目录层次结构中,将“Android”切换为“Project”。 然后删除一个文件夹“.idea/libraries”,只删除“libraries”。 从菜单“File -> Invalidate Caches / Restart... -> Invalidate and Restart”中选择一个选项。

【讨论】:

  • 这对我也有用。但很好奇,为什么会这样。 “无效缓存/重启”究竟是做什么的?
  • 谢谢。 com.android.support:support-v4:27.1.1 对我有用
【解决方案4】:

美好的一天,我知道这有点晚了。

但我也遇到过这个,当我更新到 Android Studio 3.0 时

我所做的是我改变了

compile 'com.android.support:support-v4:26.1.0'

implementation 'com.android.support:support-v4:26.1.0'

希望它可以帮助某人。

【讨论】:

  • support_library = '27.1.1' 到 support_library = '27.1.0' 为我工作。不知道为什么降级固定。
【解决方案5】:

这是我为解决完全相同的问题所做的。 1. 进入 SDK 管理器。 2. 检查 Android API 27 和 Android 8.0 (Oreo) 3. 单击“应用”下载并安装这些 SDK 4. 在 build.gradle 中,将 'buildToolsVersion "26.0.1"' 更改为 'buildToolsVersion "26.0.2"' 并进行 gradle 同步。

希望这可以帮助您解决问题。

【讨论】:

    【解决方案6】:

    您的 buildToolsVersion 版本与依赖项中的版本不同 (例如 buildToolsVersion 是 27.0.0 但实现'com.android.support:support-v4:27.0.1')。使它们相同。

    【讨论】:

      【解决方案7】:

      我的问题通过将compileSdkVersiontargetSdkVersion26 更改为最新版本27 解决了,您还需要将dependencies 升级为27

      android {
          compileSdkVersion 27
          defaultConfig {
              applicationId "com......"
              minSdkVersion 15
              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:design:27.1.0'
      }
      

      希望这也能解决你的问题:)

      【讨论】:

        【解决方案8】:

        尝试将其添加到您的 build.gradle(app) 依赖项中:

        resolutionStrategy {
            force libraries.support.appCompat
            force libraries.support.design
            force 'com.android.support:support-utils:26.0.1'
            force 'com.android.support:support-compat:26.0.1'
        }
        

        【讨论】:

          【解决方案9】:

          这行得通。

          我已将编译和支持库版本从 26.x.x 更新到 27.x.x。

          【讨论】:

            【解决方案10】:

            我在这里尝试了所有答案,并从很多地方尝试了许多其他答案,但只有以下技术对我有用。 简单的方法是您只需要关闭项目,然后导入Gradle 项目 或者您可以转到项目结构 -> 项目 -> 更改 Gradel 插件 = 4.4 和 Android 插件版本 = 3.1.4。 以上这两种方法都有效。

            注意:这些版本(4.4、3.1.4)是我写这个答案时的最新版本,请使用最新版本而不是这些版本。

            【讨论】:

              【解决方案11】:

              同样的问题,如果您使用的是AndroidX,请添加:

              implementation 'androidx.legacy:legacy-support-v4:1.0.0'
              

              【讨论】:

                【解决方案12】:

                也许你已经升级了 gradle 的版本。 当我的 gradle 版本是 4.4 并且插件版本是 3.1.1 时。没关系。

                【讨论】:

                  【解决方案13】:

                  这项工作:

                  删除 $HOME/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar 中的所有文件

                  【讨论】:

                    【解决方案14】:

                    将所有Support Library 版本更改为最新的27.1.1,错误消失了。

                    【讨论】:

                      【解决方案15】:

                      请更换安卓支持库。

                      来自

                      27.1.1
                      

                      28.0.0-alpha3
                      

                      并在以下情况下将 27 替换为 28:

                      compileSdkVersion 28
                      buildToolsVersion "28.0.0"
                      targetSdkVersion 28
                      

                      这将解决问题。

                      【讨论】:

                        【解决方案16】:

                        R.attr.actionBarSize 更改为androidx.appcompat.R.attr.actionBarSize

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-11-01
                          • 2018-05-14
                          • 1970-01-01
                          • 1970-01-01
                          • 2017-07-25
                          • 2018-09-05
                          相关资源
                          最近更新 更多