Неможливо вирішити символ "? 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'

Можливо, ви hava оновили версію gradle.
Еван

Відповіді:


243

Ніщо не допомогло, але змінилося:

?attr/actionBarSizeзробити ?android:attr/actionBarSizeроботу.

Це насправді помилка в кількох версіях. Навіть якщо ви цього не виправите, Android автоматично виправить це під час виконання.


20
Я думаю ?android:attr/actionBarSize, що сумісний лише з api 21, ?attr/actionBarSizeдля перегляду для Android Studio потрібен попередній 21 sdk. Інша проблема для мене полягала в тому, щоб переконатися, що lib-файли 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/actionBarSizeце частина v4бібліотеки.


вкажіть, про яку бібліотечну мову ви говорите
D_Alpha

Мені довелося змінити: імплементацію 'com.android.support:support-v4:26.1.0', щоб зібрати 'com.android.support:support-v4:26.1.0'
Луї Паркін

1
Використовуйте implementationзамість compileтепер.
Сурагч

Я думаю, що ця відповідь не повинна бути обраною відповіддю. Тому що це змушує вас використовувати бібліотеку support-v4, коли не потрібно. Ви можете сказати, що відповідь Сида та Вікторії Климової - найкраща відповідь, ви можете уникнути використання зайвої бібліотеки у своєму проекті легко ...
Еврен Юртесен

Ця відповідь мені навіть не допомогла. Відповідь Сіда допомагає, але я не розумію, навіщо мені потрібен android:префікс, коли я вже додав androidпростір імен, xmlns:android="http://schemas.android.com/apk/res/android"чи хтось знає?
користувач1209216

28

У ієрархії каталогів проектів перемкніть "Android" на "Проект". Потім видаліть папку ".idea / бібліотеки", лише "бібліотеки". Виберіть параметр у меню "Файл -> Недійсний кеш / Перезапуск ... -> Недійсний і перезапустіть".


3
Це працювало і для мене. Але цікаво, чому це сталося. Що саме робить "Недійсний кеш / перезапуск"?
Аніл Горті

Дякую. Мені це спрацювало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' працював на мене. не впевнений, чому занижений рівень виправлення.
Токенізатор

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.

Сподіваємось, це допоможе вирішити вашу проблему.


3

Ваша версія buildToolsVersion відрізняється від версії залежностями (наприклад, buildToolsVersion становить 27.0.0, але реалізація 'com.android.support:support-v4:27.0.1'). Зробіть їх однаковими.


2

мою проблему вирішили зміною compileSdkVersionі targetSdkVersionз 26останньої версії 27, а також вам потрібно оновити ур 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'
}

сподіваюся, що це також вирішить проблему ур :)


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

Можливо, ви hava оновили версію 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

це вирішить проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.