Impossible de résoudre le symbole «? Attr / actionBarSize» après la mise à jour d'Android Studio de 2.3 vers 3.0 pour buildToolsVersion «26 .0.2 »


119

Après la mise à jour d'Android Studio de 2.3 à 3.0, je suis passé buildToolsVersionde 26.0.0 à 26.0.2 et après, j'obtiens cette erreur:

Cannot resolve symbol '?attr/actionBarSize

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

Dépendances:

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

Peut-être avez-vous mis à jour la version de gradle.
Evan

Réponses:


243

Rien n'a aidé, mais changer:

?attr/actionBarSizepour ?android:attr/actionBarSizefaire le travail.

C'est en fait un bogue dans quelques versions. Même si vous ne le réparez pas, Android le corrigera automatiquement au moment de l'exécution.


20
Je pense que ce ?android:attr/actionBarSizen'est compatible qu'avec l'api 21, ?attr/actionBarSizenécessite un sdk pré-21 installé pour Android Studio pour le voir. L'autre problème pour moi était de m'assurer que les bibliothèques compileSdk et de support ont le même numéro de version majeur (27 dans mon cas)
Daniel Wilson

2
Hmmm, ça semble un peu magique, mais ça marche. J'aimerais voir une explication définitive qui décrit précisément ce qui rompt avec les différents sdks et ce qui fonctionne et pourquoi.
SMBiggs

cela semble être un bogue car le projet compile et compile correctement cette erreur.
LMaker

34

Mettez à jour toutes les versions de votre bibliothèque vers 26.1.0(vers la version la plus récente) et ajoutez également:

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

si vous utilisez Android Studio 3.0.0 et supérieur, utilisez

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

Synchronisez votre projet et l'erreur se résoudra automatiquement car elle ?attr/actionBarSizefait partie de la v4bibliothèque.


spécifiez de quelle version de bibliothèque vous parlez
D_Alpha

J'ai dû changer: implémentation 'com.android.support:support-v4:26.1.0' pour compiler 'com.android.support:support-v4:26.1.0'
Louis Parkin

1
Utilisez implementationplutôt que compilemaintenant.
Suragch

Je pense que cette réponse ne devrait pas être la réponse choisie. Parce que cela vous oblige à utiliser la bibliothèque support-v4 lorsque vous n'en avez pas besoin. Vous pouvez La réponse de Sid et Victoria Klimova est la meilleure réponse, vous pouvez éviter d'utiliser une bibliothèque inutile dans votre projet facilement ...
Evren Yurtesen

Cette réponse ne m'a même pas aidé. La réponse de Sid aide, mais je ne comprends pas pourquoi j'ai besoin d'un android:préfixe alors que j'ai déjà ajouté un androidespace de noms, xmlns:android="http://schemas.android.com/apk/res/android"est-ce que quelqu'un le sait?
user1209216

28

Dans la hiérarchie du répertoire du projet, basculez "Android" sur "Projet". Puis supprimez un dossier «.idea / bibliothèques», uniquement «bibliothèques». Sélectionnez une option dans le menu "Fichier -> Invalider les caches / Redémarrer ... -> Invalider et redémarrer".


3
Cela a fonctionné pour moi aussi. Mais curieux, pourquoi il l'a fait. Que fait exactement "Invalidate Caches / Restart"?
Anil Gorthy

Merci. Cela a fonctionné pour moi aveccom.android.support:support-v4:27.1.1
Arash

11

Bonne journée, je sais que c'est un peu tard.

mais j'ai rencontré celui-ci aussi, lorsque j'ai mis à jour vers Android Studio 3.0

ce que j'ai fait c'est que j'ai changé

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

à

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

J'espère que cela peut aider quelqu'un.


support_library = '27 .1.1 'à support_library = '27 .1.0' a fonctionné pour moi. Je ne sais pas pourquoi la rétrogradation a été corrigée.
The Tokenizer

4

C'est ce que j'ai fait pour résoudre exactement le même problème. 1. Accédez au gestionnaire de SDK. 2. Vérifiez l'API Android 27 et Android 8.0 (Oreo) 3. Cliquez sur "Appliquer" pour télécharger et installer ces SDK 4. Dans build.gradle, remplacez "buildToolsVersion" 26.0.1 "" par "buildToolsVersion" 26.0.2 "" et effectuez une synchronisation graduelle.

J'espère que cela peut vous aider à résoudre votre problème.


3

Votre version de buildToolsVersion diffère de la version dans les dépendances (par exemple, buildToolsVersion est 27.0.0 mais implémentation 'com.android.support:support-v4:27.0.1'). Faites-en la même chose.


2

mon problème résolu en changeant compileSdkVersionet targetSdkVersionde 26la dernière version 27, aussi u besoin de mettre à niveau ur 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'
}

j'espère que cela résoudra aussi votre problème :)


1

Essayez d'ajouter ceci dans vos dépendances build.gradle (application):

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

Cela a fonctionné.

J'ai mis à jour les versions de compilation et de support de la bibliothèque de 26.xx à 27.xx


1

J'ai essayé toutes les réponses ici et tant d'autres dans de nombreux endroits, mais seules les techniques ci-dessous ont fonctionné pour moi. La manière simple est qu'il vous suffit de fermer le projet puis d' importer le même projet qu'un projet Gradle Ou vous pouvez aller dans Structure du projet -> projet -> changer le plugin Gradel = 4.4 et la version du plugin Android = 3.1.4. Ces deux méthodes fonctionnent.

Remarque: Ces versions (4.4, 3.1.4) sont les plus récentes lorsque j'écris cette réponse, veuillez utiliser la dernière version à la place de celles-ci.


0

Peut-être avez-vous mis à jour la version de gradle. quand ma version gradle est 4.4 et la version plugin est 3.1.1.

entrez la description de l'image ici


0

ce travail:

supprimer tous les fichiers dans $ HOME / .gradle / caches / transforms-1 / files-1.1 / appcompat-v7-27.1.1.aar



0

veuillez remplacer les bibliothèques de support Android.

de

27.1.1

à

28.0.0-alpha3

et remplacez 27 par 28 pour les cas suivants:

compileSdkVersion 28
buildToolsVersion "28.0.0"
targetSdkVersion 28

cela résoudra le problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.