Impossibile risolvere il simbolo "? Attr / actionBarSize" dopo l'aggiornamento di Android Studio da 2.3 a 3.0 per buildToolsVersion "26 .0.2 "


119

Dopo aver aggiornato Android Studio da 2.3 a 3.0 sono passato buildToolsVersionda 26.0.0 a 26.0.2 e successivamente ricevo questo errore:

Cannot resolve symbol '?attr/actionBarSize

Codice 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"/>

dipendenze:

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

Forse hai aggiornato la versione di gradle.
Evan

Risposte:


243

Niente ha aiutato, ma cambiare:

?attr/actionBarSizeper ?android:attr/actionBarSizefare il lavoro.

In realtà è un bug in poche versioni. Anche se non lo risolverai, Android lo risolverà automaticamente in fase di esecuzione.


20
Penso che ?android:attr/actionBarSizesia compatibile solo con api 21, ?attr/actionBarSizerichiede un SDK pre-21 installato per Android Studio per vederlo. L'altro problema per me era assicurarmi che compileSdk e le librerie di supporto avessero lo stesso numero di versione principale (27 nel mio caso)
Daniel Wilson

2
Hmmm, sembra un po 'magico, ma funziona. Mi piacerebbe vedere una spiegazione definitiva che descriva esattamente cosa rompe con i vari SDK e cosa funziona e perché.
SMBiggs

sembra un bug perché il progetto viene compilato e compilato correttamente con questo errore.
LMaker

34

Aggiorna tutte le versioni della tua libreria a 26.1.0(alla versione più recente) e aggiungi anche:

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

se stai usando Android Studio 3.0.0 e versioni successive, usa

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

Sincronizza il tuo progetto e l'errore si risolverà automaticamente perché ?attr/actionBarSizefa parte della v4libreria.


specifica di quale versione della libreria stai parlando
D_Alpha

Ho dovuto cambiare: implementazione "com.android.support:support-v4:26.1.0" per compilare "com.android.support:support-v4:26.1.0"
Louis Parkin

1
Usa implementationinvece di compileadesso.
Suragch

Penso che questa risposta non dovrebbe essere la risposta selezionata. Perché ti costringe a usare la libreria support-v4 quando non devi. Puoi la risposta di Sid e Victoria Klimova è la risposta migliore, puoi evitare di utilizzare facilmente una libreria non necessaria nel tuo progetto ...
Evren Yurtesen

Questa risposta non mi ha nemmeno aiutato. La risposta di Sid aiuta, ma non capisco perché ho bisogno del android:prefisso quando ho già aggiunto lo androidspazio dei nomi xmlns:android="http://schemas.android.com/apk/res/android"qualcuno lo sa?
user1209216

28

Nella gerarchia della directory del progetto, passare da "Android" a "Progetto". Quindi eliminare una cartella ".idea / libraries", solo "libraries". Seleziona un'opzione dal menu "File -> Invalidate Caches / Restart ... -> Invalidate and Restart".


3
Questo ha funzionato anche per me. Ma curioso, perché lo ha fatto. Che cosa fa esattamente "Invalidate Caches / Restart"?
Anil Gorthy

Grazie. Ha funzionato per me concom.android.support:support-v4:27.1.1
Arash

11

Buon giorno, so che è un po 'tardi.

ma ho riscontrato anche questo, quando ho aggiornato ad Android Studio 3.0

quello che ho fatto è cambiato

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

per

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

Spero possa aiutare qualcuno.


support_library = '27 .1.1 'a support_library = '27 .1.0' ha funzionato per me. non so perché il downgrade è stato risolto.
The Tokenizer

4

Questo è quello che ho fatto per risolvere esattamente lo stesso problema. 1. Vai a SDK manager. 2. Controllare l'API 27 di Android e Android 8.0 (Oreo) 3. Fare clic su "Applica" per scaricare e installare gli SDK 4. In build.gradle, modificare "buildToolsVersion" 26.0.1 "" in "buildToolsVersion" 26.0.2 "" e fai una sincronizzazione graduale.

Spero che questo possa aiutarti a risolvere il tuo problema.


3

La tua versione buildToolsVersion differisce dalla versione nelle dipendenze (ad esempio buildToolsVersion è 27.0.0 ma l'implementazione "com.android.support:support-v4:27.0.1"). Falli uguali.


2

il mio problema risolto cambiando compileSdkVersione targetSdkVersiondal 26l'ultima versione 27, anche u devi aggiornare ur dependenciesa 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'
}

spero che questo risolva anche il tuo problema :)


1

Prova ad aggiungerlo nelle tue dipendenze 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

Questo ha funzionato.

Ho aggiornato la compilazione e supporto le versioni lib da 26.xx a 27.xx


1

Ho provato tutte le risposte qui e tante altre da molti posti, ma solo le tecniche seguenti hanno funzionato per me. Il modo più semplice è che devi solo chiudere il progetto, quindi importare lo stesso progetto come progetto Gradle Oppure puoi andare su Struttura progetto -> progetto -> modifica plugin Gradel = 4.4 e versione plugin Android = 3.1.4. Entrambi questi metodi sopra funzionano.

Nota: queste versioni (4.4, 3.1.4) sono le ultime quando scrivo questa risposta, per favore usa l'ultima versione invece di queste.


0

Forse hai aggiornato la versione di gradle. quando la mia versione gradle è 4.4 e la versione plugin è 3.1.1.

inserisci qui la descrizione dell'immagine


0

questo lavoro:

elimina tutti i file in $ HOME / .gradle / caches / transforms-1 / files-1.1 / appcompat-v7-27.1.1.aar



0

si prega di sostituire le librerie di supporto Android.

a partire dal

27.1.1

per

28.0.0-alpha3

e sostituire da 27 a 28 nei seguenti casi:

compileSdkVersion 28
buildToolsVersion "28.0.0"
targetSdkVersion 28

questo risolverà il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.