Nie można rozwiązać symbolu „? Attr / actionBarSize” po aktualizacji Android Studio z wersji 2.3 do 3.0 dla buildToolsVersion „26 .0.2”

119

Po zaktualizowaniu Android Studio z wersji 2.3 do 3.0 zmieniłem buildToolsVersionz 26.0.0 na 26.0.2 i potem pojawia się ten błąd:

Cannot resolve symbol '?attr/actionBarSize

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

Zależności:

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
Rahul Roshan
źródło
Może zaktualizowałeś wersję gradle.
Evan

Odpowiedzi:

243

Nic nie pomogło, ale zmiana:

?attr/actionBarSizewykonać ?android:attr/actionBarSizepracę.

To właściwie błąd w kilku wersjach. Nawet jeśli tego nie zrobisz, Android automatycznie naprawi to w czasie wykonywania.

Victoria Klimova
źródło
20
Myślę, że ?android:attr/actionBarSizejest kompatybilny tylko z api 21, ?attr/actionBarSizewymaga zainstalowanego pakietu SDK w wersji starszej niż 21 dla Android Studio, aby go zobaczyć. Innym problemem było upewnienie się, że kompilator compileSdk i biblioteki obsługujące mają ten sam główny numer wersji (w moim przypadku 27)
Daniel Wilson
2
Hmmm, wydaje się trochę magiczne, ale działa. Bardzo chciałbym zobaczyć ostateczne wyjaśnienie, które dokładnie opisuje, co nie działa z różnymi SDK i co działa i dlaczego.
SMBiggs
wygląda to na błąd, ponieważ projekt kompiluje się i buduje poprawnie z tym błędem.
LMaker
34

Zaktualizuj wszystkie wersje biblioteki do 26.1.0(do najnowszej wersji), a także dodaj:

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

jeśli używasz Android Studio 3.0.0 lub nowszego, użyj

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

Zsynchronizuj projekt, a błąd zostanie automatycznie rozwiązany, ponieważ ?attr/actionBarSizejest częścią v4biblioteki.

Kunwar Ajeet Singh Rajput
źródło
określ, o której wersji biblioteki mówisz
D_Alpha
Musiałem zmienić: implementację „com.android.support:support-v4:26.1.0”, aby skompilować „com.android.support:support-v4:26.1.0”
Louis Parkin
1
Użyj implementationzamiast compileteraz.
Suragch
Myślę, że ta odpowiedź nie powinna być wybraną odpowiedzią. Ponieważ zmusza cię do korzystania z biblioteki support-v4, kiedy nie musisz. Możesz, odpowiedź Sida i Victorii Klimovej jest najlepszą odpowiedzią, możesz łatwo uniknąć korzystania z niepotrzebnej biblioteki w swoim projekcie ...
Evren Yurtesen
Ta odpowiedź nawet mi nie pomogła. Odpowiedź Sida pomaga, ale nie rozumiem, dlaczego potrzebuję android:prefiksu, skoro już dodałem androidprzestrzeń nazw, xmlns:android="http://schemas.android.com/apk/res/android"czy ktoś wie?
user1209216
28

W hierarchii katalogów projektów przełącz „Android” na „Projekt”. Następnie usuń folder „.idea / libraries”, tylko „libraries”. Wybierz opcję z menu „Plik -> Unieważnij pamięci podręczne / Uruchom ponownie ... -> Unieważnij i uruchom ponownie”.

Oleh Kholiavchuk
źródło
3
U mnie też to zadziałało. Ale ciekawy, dlaczego tak się stało. Co dokładnie robi „Unieważnij pamięć podręczną / Uruchom ponownie”?
Anil Gorthy
Dzięki. To zadziałało dla mniecom.android.support:support-v4:27.1.1
Arash
11

Dzień dobry, wiem, że to trochę późno.

ale spotkałem się też z tym, kiedy zaktualizowałem do Android Studio 3.0

zmieniłem się

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

do

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

Mam nadzieję, że to może komuś pomóc.

Chris Palma
źródło
support_library = '27 .1.1 'do support_library = '27 .1.0' działało dla mnie. nie wiem, dlaczego obniżanie klasy zostało naprawione.
The Tokenizer
4

Oto, co zrobiłem, aby naprawić dokładnie ten sam problem. 1. Przejdź do menedżera SDK. 2. Sprawdź Android API 27 i Android 8.0 (Oreo) 3. Kliknij „Zastosuj”, aby pobrać i zainstalować te zestawy SDK 4. W pliku build.gradle zmień „buildToolsVersion” 26.0.1 ”na„ buildToolsVersion ”26.0.2” ” i wykonaj synchronizację gradle.

Mam nadzieję, że to pomoże rozwiązać problem.

Baoqiang Yan
źródło
3

Twoja wersja buildToolsVersion różni się od wersji zależnościami (np. BuildToolsVersion to 27.0.0, ale implementacja „com.android.support:support-v4:27.0.1”). Uczyń je takimi samymi.

Andrew Glukhoff
źródło
2

mój problem został rozwiązany przez zmianę compileSdkVersioni targetSdkVersionz 26do ostatniej wersji 27, również musisz zaktualizować ur dependenciesdo 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'
}

mam nadzieję, że to też rozwiąże twój problem :)

IRvanFauziE
źródło
1

Spróbuj dodać to w zależnościach 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'
}
petryk33
źródło
1

To zadziałało.

Zaktualizowałem kompilację i obsługuję wersje lib z 26.xx do 27.xx

Mahi
źródło
1

Wypróbowałem wszystkie odpowiedzi tutaj i wielu innych z wielu miejsc, ale tylko poniższe techniki zadziałały dla mnie. Prosty sposób polega na tym, że wystarczy zamknąć projekt, a następnie zaimportować ten sam projekt, co projekt Gradle. Możesz też przejść do opcji Struktura projektu -> projekt -> zmień wtyczkę Gradel = 4.4 i wersję wtyczki Androida = 3.1.4. Obie powyższe metody działają.

Uwaga: te wersje (4.4, 3.1.4) są najnowsze, kiedy piszę tę odpowiedź, użyj najnowszej wersji zamiast tych.

Biswajit
źródło
0

Może zaktualizowałeś wersję gradle. kiedy moja wersja Gradle to 4.4, a wersja wtyczki to 3.1.1. to jest w porządku.

wprowadź opis obrazu tutaj

Evan
źródło
0

ta praca:

usuń cały plik z $ HOME / .gradle / caches / transforms-1 / files-1.1 / appcompat-v7-27.1.1.aar

Lepszy
źródło
0

proszę wymienić biblioteki wsparcia dla Androida.

z

27.1.1

do

28.0.0-alpha3

i zamień 27 na 28 w następujących przypadkach:

compileSdkVersion 28
buildToolsVersion "28.0.0"
targetSdkVersion 28

to rozwiąże problem.

Ahamadullah Saikat
źródło