ไม่สามารถแก้ไขสัญลักษณ์ '? attr / actionBarSize' หลังจากอัปเดต Android Studio จาก 2.3 เป็น 3.0 สำหรับ buildToolsVersion '26 .0.2 '


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
Evan

คำตอบ:


243

ไม่มีอะไรช่วย แต่เปลี่ยน:

?attr/actionBarSizeเพื่อ?android:attr/actionBarSizeทำงาน

นั่นเป็นข้อบกพร่องในไม่กี่เวอร์ชัน แม้ว่าคุณจะไม่สามารถแก้ไขได้ แต่ Android จะแก้ไขโดยอัตโนมัติเมื่อรันไทม์


20
ฉันคิดว่า?android:attr/actionBarSizeเข้ากันได้กับ api 21 เท่านั้น?attr/actionBarSizeต้องติดตั้ง pre-21 sdk สำหรับ Android Studio เพื่อดู ปัญหาอื่น ๆ สำหรับฉันคือตรวจสอบให้แน่ใจว่า compileSdk และ libs สนับสนุนมีหมายเลขเวอร์ชันหลักเดียวกัน (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/actionBarSizeเป็นส่วนหนึ่งของv4ไลบรารี


ระบุรุ่นไลบรารีที่คุณกำลังพูดถึง
D_Alpha

ฉันต้องเปลี่ยน: การใช้งาน 'com.android.support:support-v4:26.1.0' เพื่อรวบรวม 'com.android.support:support-v4:26.1.0'
Louis Parkin

1
ใช้implementationแทนcompileเลย
Suragch

ฉันคิดว่าคำตอบนี้ไม่ควรเป็นคำตอบที่เลือก เพราะมันบังคับให้คุณใช้ไลบรารี support-v4 เมื่อคุณไม่จำเป็นต้องใช้ คุณสามารถคำตอบของ Sid และ Victoria Klimova เป็นคำตอบที่ดีที่สุดคุณสามารถหลีกเลี่ยงการใช้ห้องสมุดที่ไม่จำเป็นในโครงการของคุณได้อย่างง่ายดาย ...
Evren Yurtesen

คำตอบนี้ไม่ได้ช่วยฉันด้วยซ้ำ คำตอบของ Sid ช่วยได้ แต่ฉันไม่เข้าใจว่าทำไมฉันต้องใช้android:คำนำหน้าเมื่อฉันเพิ่มandroidเนมสเปซไปแล้วxmlns:android="http://schemas.android.com/apk/res/android"ไม่มีใครรู้
user1209216

28

ในลำดับชั้นไดเรกทอรีโครงการให้สลับ "Android" เป็น "โครงการ" จากนั้นลบโฟลเดอร์ ".idea / libraries" เฉพาะ "libraries" เลือกตัวเลือกจากเมนู "File -> Invalidate Caches / Restart ... -> Invalidate and Restart"


3
สิ่งนี้ได้ผลสำหรับฉันด้วย แต่อยากรู้ว่าทำไมมันถึงทำ "Invalidate Caches / Restart" ทำอะไรกันแน่?
Anil Gorthy

ขอบคุณ มันได้ผลสำหรับฉันด้วยcom.android.support:support-v4:27.1.1
Arash

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' ได้ผลสำหรับฉัน ไม่แน่ใจว่าเหตุใดจึงแก้ไขการดาวน์เกรด
Tokenizer

4

นี่คือสิ่งที่ฉันทำเพื่อแก้ไขปัญหาเดียวกัน 1. ไปที่ผู้จัดการ SDK 2. ตรวจสอบ Android API 27 และ Android 8.0 (Oreo) 3. คลิก "ใช้" เพื่อดาวน์โหลดและติดตั้ง SDK เหล่านั้น 4. ใน build.gradle เปลี่ยน "buildToolsVersion" 26.0.1 "" เป็น "buildToolsVersion" 26.0.2 "" และทำการซิงก์การไล่ระดับสี

หวังว่านี่จะช่วยแก้ไขปัญหาของคุณได้


3

เวอร์ชัน buildToolsVersion ของคุณแตกต่างจากเวอร์ชันในการอ้างอิง (เช่น buildToolsVersion คือ 27.0.0 แต่การใช้งาน 'com.android.support:support-v4:27.0.1') ทำให้เหมือนกัน


2

ปัญหาของฉันได้รับการแก้ไขโดยการเปลี่ยนcompileSdkVersionและtargetSdkVersionจาก26ไปเป็นรุ่นสุดท้ายที่27ยังต้อง u อัพเกรด 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

โปรดเปลี่ยนไลบรารีสนับสนุน Android

จาก

27.1.1

ถึง

28.0.0-alpha3

และแทนที่ 27 ถึง 28 สำหรับกรณีต่อไปนี้:

compileSdkVersion 28
buildToolsVersion "28.0.0"
targetSdkVersion 28

วิธีนี้จะช่วยแก้ปัญหาได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.