将build.toolsVersion '26 .0.2'的Android Studio从2.3更新到3.0后,无法解析符号'?attr / actionBarSize'


119

将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的版本。
伊万

Answers:


243

没有任何帮助,但要进行以下更改:

?attr/actionBarSize?android:attr/actionBarSize做的工作。

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


20
我认为?android:attr/actionBarSize仅与api 21兼容,?attr/actionBarSize需要为Android Studio安装21之前版本的sdk才能看到它。对我来说,另一个问题是确保compileSdk和支持库具有相同的主版本号(在我的情况下为27)
Daniel Wilson

2
嗯,看起来有点神奇,但是可以用。我希望看到一个明确的说明,该说明准确地描述了各种sdks的破坏方式以及有效的方式以及原因。
SMBiggs

这似乎是一个错误,因为项目会编译并在此错误的情况下正常构建。
LMaker

34

将所有库版本更新为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库的一部分。


指定您要谈论的库版本
D_Alpha '17

我不得不改变:实行“com.android.support:support-v4:26.1.0”编译“com.android.support:support-v4:26.1.0”
路易·帕金

1
使用implementation而不是compile现在。
Suragch

我认为这个答案不应该是选定的答案。因为它会迫使您在不需要时使用support-v4库。您可以Sid和Victoria Klimova的答案是最好的答案,可以避免在您的项目中轻松使用不必要的库...
Evren Yurtesen 18-4-13

这个答案甚至都帮不了我。Sid的答案会有所帮助,但是我不明白为什么android:我已经添加了任何人都知道的android名称空间后为什么需要前缀xmlns:android="http://schemas.android.com/apk/res/android"
user1209216 '18

28

在项目目录层次结构中,将“ Android”切换为“ Project”。然后删除文件夹“ .idea / libraries”,仅删除“ libraries”。从菜单“文件->使高速缓存无效/重新启动...->使无效并重新启动”中选择一个选项。


3
这也对我有用。但是很好奇,为什么会这样。“使缓存无效/重新启动”究竟是做什么的?
阿尼尔·戈尔西(Annil Gorthy),

谢谢。它对我com.android.support:support-v4:27.1.1
有用

11

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

但是当我更新到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'对我有用。不知道为什么降级固定。
令牌生成器'18

4

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

希望这可以解决您的问题。



2

我的问题解决了改变compileSdkVersion,并targetSdkVersion26最后一个版本27,也ü需要升级UR dependencies27

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

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


1

尝试将其添加到您的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'
}

1

这工作了。

我已经将编译和支持lib版本从26.xx更新到27.xx


1

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

注意:这些版本(4.4、3.1.4)是最新版本,当我写此答案时,请使用最新版本代替这些版本。


0

也许您已经升级了gradle的版本。当我的gradle版本为4.4并且插件版本为3.1.1。可以。

在此处输入图片说明


0

这项工作:

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



0

请替换android支持库。

27.1.1

28.0.0-alpha3

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

compileSdkVersion 28
buildToolsVersion "28.0.0"
targetSdkVersion 28

这将解决问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.