Nie znaleziono zasobu pasującego do podanej nazwy: attr „android: keyboardNavigationCluster”. podczas aktualizacji do Biblioteki pomocy technicznej 26.0.0

215

Mam ten problem podczas aktualizacji do najnowszej wersji Biblioteki pomocy technicznej 26.0.0 ( https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0 ):

Błąd: (18, 21) Nie znaleziono zasobu pasującego do podanej nazwy: attr „android: keyboardNavigationCluster”.

/.../app/build/intermediates/res/merged/beta/debug/values-v26/values-v26.xml
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:Execution failed for task ':app:processBetaDebugResources'.

com.android.ide.common.process.ProcessException: Nie można wykonać aapt

Plik pochodzi z biblioteki wsparcia:

<style name="Base.V26.Widget.AppCompat.Toolbar" parent="Base.V7.Widget.AppCompat.Toolbar">
    <item name="android:touchscreenBlocksFocus">true</item>
    <item name="android:keyboardNavigationCluster">true</item>
</style>

Używamy następujących wersji:

ext.COMPILE_SDK_VERSION = 26
ext.BUILD_TOOLS_VERSION = "26.0.1"

ext.MIN_SDK_VERSION = 17
ext.TARGET_SDK_VERSION = 26
ext.ANDROID_SUPPORT_LIBRARY_VERSION = "26.0.0"
ext.GOOGLE_PLAY_SERVICES_LIBRARY_VERSION = "11.0.2"

compile 'com.android.support:appcompat-v7:' + ANDROID_SUPPORT_LIBRARY_VERSION
compile 'com.android.support:design:' + ANDROID_SUPPORT_LIBRARY_VERSION
compile 'com.android.support:recyclerview-v7:' + ANDROID_SUPPORT_LIBRARY_VERSION

Jakieś pomysły?

Alécio Carvalho
źródło
5
problem pozostaje w najnowszej wersji (26.0.1): developer.android.com/topic/libraries/support-library/…
Alécio Carvalho

Odpowiedzi:

314

Udało mi się to rozwiązać, aktualizując wersję SDK i narzędzia gradle compileSdkVersion 26 buildToolsVersion "26.0.1"

i support library 26.0.1 https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-1

Użytkownik XH6
źródło
4
To mi nie zadziałało. Musiałem zaktualizować usługi Google Play do wersji 11.2, a następnie pojawił się powyższy błąd i Twoja odpowiedź nie pomogła. Uaktualniłem też wszystkie elementy pomocy technicznej do wersji 26.0.1, ale nadal nie mam szczęścia. Czy masz jakieś inne pomysły?
Nandor Poka
Ale aktualizacja do 26 będzie miała również duży wpływ na wiele innych rzeczy. W tym powiadomienia nie działają, dopóki nie zostaną utworzone odpowiednie kanały dla Androida 8.0, prawda?
Patric
5
@patric Jego skompilowany zestaw SDK nie jest docelowy.
użytkownik XH6,
Jeśli to rozwiązanie nie zadziała, sprawdź odpowiedź Sama poniżej.
Benny
2
Co zrobić, jeśli nie chcę aktualizować compileSdkVersion z 25 z powodu wymagań biznesowych? Jak się tego pozbyć?
binaryKarmic
53

Zmień wersję kompilacji zestawu SDK:

compileSdkVersion 26

Wersja narzędzia do budowania:

buildToolsVersion "26.0.1"

Docelowa wersja zestawu SDK:

targetSdkVersion 26

Zależności:

compile 'com.android.support:appcompat-v7:26+'
compile 'com.android.support:design:26+'
compile 'com.android.support:recyclerview-v7:26+'
compile 'com.android.support:cardview-v7:26+'

Synchronizuj Gradle.

Amar Gore
źródło
2
ostrzeżenie: unikaj używania + w numerze wersji.
Qadir Hussain
2
to działało dla mnie. usunięto + ze wszystkich, aby pozbyć się ostrzeżeń
Qadir Hussain
2
nie używaj +, chcesz uzyskać powtarzalne kompilacje i mieć pełną kontrolę nad swoimi zależnościami. Nie chcesz, aby twoja aplikacja zaczęła się buggować po nowej kompilacji, ponieważ po cichu zaktualizowała bibliotekę ...
Snicolas
1
Aby targetSdkVersionto działało, nie trzeba go aktualizować . Ustawienie tej wartości na 26 będzie miało inne implikacje - tj. Musisz dostosować aplikację do systemu Android 8.0.
ataulm
w którym pliku muszę dodać te rzeczy, możesz poprowadzić @ataulm
Ravi Mehta
35

Musiałem zmienić compileSdkVersion = 26i buildToolsVersion = '26.0.1'we wszystkich moich build.gradleplikach zależności

Erik Duisters
źródło
2
powinieneś użyć stałej w gradle.properties dla wszystkich numerów wersji i użyć jej w plikach build.gradle: api „com.android.support:appcompat-v7:$ANDROID_COMPATIBILITY_VERSION”
Snicolas
13

W moim ojczystym projekcie reagującym ten błąd jest generowany w pliku react-native-fbsdk. Aktualizacja w react-native-fbsdk/android/build.gradlenastępujący sposób rozwiązuje problem.

compileSdkVersion 26
buildToolsVersion "26.0.1"
peteroid
źródło
7
dodanie poniżej do roota build.gradle działało, nie trzeba edytować pliku build.gradle modułusubprojects { afterEvaluate {project -> if (project.hasProperty("android")) { android { compileSdkVersion 26 buildToolsVersion '26.0.1' } } } }
Yalamber
9

Uderzyłem w ten sam błąd i szukałem w Google wszystkiego, co robię źle, ponieważ generowany jest kod kompilacji wartości 26, a nie style, które podałem. Próbowałem wszystkiego, od Gradle 4.0 do Android Studio Preview 3.0 do kanału kanaryjskiego, nazywasz to.

Nigdy nie znalazłem odpowiedzi online. W końcu udało mi się wrócić do standardowego Dev Android Studio i wersji 2.3.3 Gradle, ponieważ przypadkowo go naprawiłem :).

Okazało się, że byłem tak skoncentrowany na aktualizacji mojego projektu biblioteki, że nie zauważyłem, że błąd został spowodowany przez nieużywany podmoduł (aplikacja demonstracyjna) zagnieżdżony w moim projekcie biblioteki. Po zaktualizowaniu modułu podrzędnego, tak aby pasował do 26 narzędzi do budowania oraz 26+ bibliotek do projektowania i obsługi, mój problem zniknął.

Nie jestem pewien, czy to właśnie widzisz, ale osobiście aktualizowałem bibliotekę lib, aby ponownie ją wydać, więc nie przejmowałem się przykładowym modułem aplikacji, a błąd na pewno wydawał się związany z 26 SDK, które tylko dotknąłem moduł lib, więc nie myślałem o sprawdzeniu drugiego. To był dla mnie cały czas problem. Mam nadzieję, że to również cię naprawia. Miałem ten błąd w 2 projektach bibliotecznych i naprawiłem go w obu.

Życzymy powodzenia w obu przypadkach, a jeśli to nie rozwiąże problemu, podziel się tym, co zrobił. Na końcu skończyłem z narzędziami do budowania BTW 26.0.01 oraz projektowaniem i obsługą 26.1.0, chociaż 26.0.1 również działało dobrze.

Sam
źródło
Naprawdę rozwiązuje problem (jeśli masz kilka modułów)
D. Sergeev
8

Miałem dokładnie ten błąd i zdałem sobie sprawę, że mój compileSdkVersionzostał ustawiony na, 25a mój buildToolsVersionzostał ustawiony na "26.0.1".

Więc po prostu zmienił compileSdkVersionsię 26i synchronizowane z Gradle. naprawiło to dla mnie problem.

EDYCJA: moja targetSDKVersionrównież została ustawiona jako26

Junaid Aziz
źródło
8

Wystąpił podobny błąd w przypadku reakcji-native-youtube i reakcja-native-orientacja.

Zrozumiałem, że build.gradle tych Projektów używa, compileSdkVersion 23ale funkcja: android: keyboardNavigationCluster została dodana od api 26(Android 8).

Więc jak to naprawić?

Jednym ze sposobów łatwego rozwiązania tego problemu jest edycja pliku /android/build.gradle (!!! NIE /android/app/build.gradle) i dodanie tego kodu na dole pliku.

Pozwala to wymusić zestaw SDK i wersję BuildTool używaną przez podmoduły:

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 27
                buildToolsVersion "27.0.2"
            }
        }
    }
}
suther
źródło
7

Zetknąłem się również z tym problemem, wystarczy wprowadzić 2 zmiany:

Nazwa pliku: android / build.gradle wspomnieć o tym poniżej kodu

subprojects {
   afterEvaluate { 
     project -> if (project.hasProperty("android")) { 
       android { 
        compileSdkVersion 26 buildToolsVersion '26.0.2' 
       } 
      }
    } 
}

Nazwa pliku: android / app / build.gradle zmień wersję zgodną z dk i buildToolVersion w następujący sposób:

compileSdkVersion 26 buildToolsVersion "26.0.2"

i w

dependencies {
    compile 'com.android.support:appcompat-v7:26.0.2'
}
Revansiddh
źródło
7

Miałem ten sam problem z moim projektem Ionic 2, wszystko, co zrobiłem, aby rozwiązać problemy, to

  • Otwórz „ionic_project_folder / platform / android / project.properties”
  • Zmień cel = android-25 na target = android-26
  • Biegać ionic build --release android

Mam nadzieję, że to komuś pomoże!

Aweda
źródło
Mój projekt zmienił się na target=android-26, ale nadal wyświetla ten błąd
Yuyang He,
6
//Adding this to the root build.gradle solved my problem, thanks @Yalamber
subprojects {
        afterEvaluate { project ->
            if (project.hasProperty("android")) {
                android {
                    compileSdkVersion 26
                    buildToolsVersion '26.0.2'
                }
            }
        }
    }
Pablo Rendón
źródło
czy możesz podzielić się więcej informacji z kodem, aby lepiej zrozumieć swoją odpowiedź.
Prags
Zwykle lepiej jest wyjaśnić rozwiązanie zamiast po prostu opublikować kilka wierszy anonimowego kodu. Możesz przeczytać Jak napisać dobrą odpowiedź , a także wyjaśnienie odpowiedzi całkowicie opartych na kodzie
Anh Pham
1
Dziękuję Ci! Najlepsza odpowiedź. Zasadniczo zależności projektu (projekty node_modules) miały różne wersje SDK. Dodanie tego kodu do poziomu kompilacji root.gradle zapewnia, że ​​wszystkie te zależności używają określonej wersji SDK, a projekt jest w stanie zbudować. : D
Nigh7Sh4de
4

Po zaktualizowaniu programu Android Studio do wersji 3.0, jeśli wystąpi ten błąd, po prostu zaktualizuj właściwości stopni, są to ustawienia, które rozwiązały mój problem:

compileSdkVersion 26

targetSdkVersion 26

buildToolsVersion '26.0.2'
Ajayacharya
źródło
26.0.2wersja kompilacji naprawiła dla mnie rzeczy.
Karl Taylor,
3

Zaktualizowałem swój projekt, app/build.gradleaby go mieć

compileSDkVersion 26
buildToolsVersion '26.0.1'

Jednak problem był w rzeczywistości z react-native-fbsdkpakietem. Musiałem zmienić te same ustawienia w node_modules/react-native-fbsdk/android/build.gradle.

Karl Taylor
źródło
3

W studio Android
kliknij projekt prawym przyciskiem myszy (ponieważ miałem projekt Cordova, miałem CordovaLib i android: w moim przypadku wybrałem androida),

  1. Wybierz Otwórz ustawienia modułu
  2. W wyskakującym oknie modalnym Struktura projektu wybierz projekt w sekcji modułów na panelu bocznym (znowu w moim przypadku jest to android)
  3. Kliknij kartę Zależności
  4. Kliknij zielony przycisk plus w prawym górnym rogu
  5. Wybierz Zależność biblioteki
  6. Z rozwijanej listy wybierz app-kompatybil-v7
  7. Oczyść projekt i przebuduj
Jac
źródło
Jest to o wiele łatwiejszy sposób na naprawienie tego niż ręczne edytowanie wszystkich plików.
Robert Liberatore
2

Uderzyłem to niedawno i pamiętam, skąd pochodzi. Jest to niezgodność między wersją Xamarin.Android. * A zainstalowaną wersją zestawu Android SDK.

Bieżące 15.5.3ustawienia domyślne nowego projektu VS2017 dla nuGet Xamarin.Android.*to, 25.4.0.2a domyślna instalacja VS dla programowania wieloplatformowego to następujące pakiety Android SDK:

  • Android 7.1- nugat
    • Platforma Android SDK 25
    • Interfejsy API Google Intel x86 Atom System Image

W przypadku uaktualnienia dla Ciebie rozwiązanie Nuget Xamarin.Android.*aby 26.1.0.1następnie trzeba będzie zainstalować pójść w Android SDK:

  • Android 8.0- Oreo
    • Platforma Android SDK 26
    • Interfejsy API Google Intel x86 Atom System Image
dskow
źródło
2

Ten sam problem dotyczył jednego z moich projektów PhoneGap (Android studio 3.0.1). Aby rozwiązać ten problem, wykonałem następujący krok

1) Kliknij prawym przyciskiem myszy nazwę projektu (w moim przypadku Android), wybierz „Otwórz ustawienia modułu”

2) Wybierz moduły (Android i CordovaLib)

3) Kliknij właściwości u góry

4) Wybierz wersję kompilacji SDK (wybrałem API 26: Android 8.0)

5) Wybierz wersję narzędzia do budowania (wybrałem 26.0.2)

6) Zgodność źródła (1.6)

7) Zgodność docelowa (1.6)

Kliknij OK i odbuduj projekt.

Poniższy link pokazuje moje ustawienia dla kroku, który wykonałem

https://app.box.com/s/o11xc8dy0c2c7elsaoppa0kwe1d94ogh https://app.box.com/s/ofdcg0a8n0zalumvpyju58he402ag1th

Chirag Purohit
źródło
2

przy próbie zmiany targetSDKVersion 26 na 25 ten czas wystąpił, znaleziono rozwiązanie Nie znaleziono zasobu pasującego do podanej nazwy: attr 'android: keyboardNavigationCluster'. podczas aktualizacji do Biblioteki pomocy technicznej 26.0.0

Just Chage Ten kod z twojego Build.gradle

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.0.1'
            }
        }
    }
}

do

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.2.0'
            }
        }
    }
}
Sanjay Hadiya
źródło
2

Ten problem wystąpił podczas kompilacji React-Native-FBSDK

I ten problem rozwiązany przez zmianę build.gradlezreact-native-fbsdk

z

compile('com.facebook.android:facebook-android-sdk:4.+')

do

compile('com.facebook.android:facebook-android-sdk:4.28.0')
Tuan Nguyen
źródło
1

Ten problem został spowodowany przez jedną z bibliotek, która potrzebowała wersji 26 do kompilacji.

Ustawienie targetSdkVersion na 26 spowoduje inne problemy i będziesz musiał dostosować swoją aplikację, aby dostosować się do platformy Oreo. To nie jest właściwe rozwiązanie dla wszystkich.

Właśnie robiłem compileSdkVersion to 26i buildToolsVersion to 26.0.2pracował dla mnie.

Należy również zaktualizować wszystkie biblioteki obsługi, aby używały wersji 26.1.0 lub nowszej.

Mohammed Ibrahim
źródło
1

zaktualizuj je stopniowo

compileSdkVersion 27 buildToolsVersion '27 .0.1 '

Artysta404
źródło
1

Rozwiązałem ten problem, wprowadzając pewne zmiany w pliku build.gradle

Zmiany w root build.gradle są następujące:

subprojects {
   afterEvaluate { 
     project -> if (project.hasProperty("android")) { 
       android { 
        compileSdkVersion 26 
        buildToolsVersion '26.0.1' 
       } 
      }
    } 
}

Zmiany w build.gradle są następujące:

compileSdkVersion 26 
buildToolsVersion "26.0.1"

i

dependencies {
    compile 'com.android.support:appcompat-v7:26.0.1'
}
Palak Jain
źródło
1

Dla każdego, kto używa języka nativescript i ma do czynienia z tym problemem: możesz dodać

compileSdkVersion 26
buildToolsVersion '26.0.1'

w App_Resources / Android / app.gradle (under android {)

Następnie uruchom tns platform remove androidi tns build androidw katalogu głównym projektu.

palia5
źródło
0

Upewnij się, że masz środowisko Android SDK 8.0 w swoim środowisku programistycznym. Miałem ten sam problem na moim komputerze MAC i zainstalowałem SDK 8.0, a jego narzędzia go naprawiły. Mam ten sam problem w systemie Windows. Pobieram teraz SDK.

Ph0b0x
źródło
0

miałem ten sam problem z jonami.

cordova platform remove android
cordova platform add android@6.4.0

I zamień w platformie / android / projet.properties

cordova.system.library.1=com.android.support:support-v4+

Do

cordova.system.library.1=com.android.support:support-v4:26+
Amr.Ayoub
źródło
0

W tym celu musisz wykonać poniższe czynności 1. kliknij prawym przyciskiem myszy projekt kliknij.

2. otwórz ustawienia modułu-> w zakładce właściwości-> zmień kompilację sdk i skompiluj wersję narzędzia na 26,26.0.0.

3. kliknij ok.

To działa dla mnie po godzinie prób.

S HemaNandhini
źródło
0

Rozwiązałem ten problem, wykonując następujące czynności:

compileSdkVersion 26
buildToolsVersion "26.0.1"

compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:design:26.0.1'
compile 'com.android.support:cardview-v7:26.0.1'
compile 'com.android.support:recyclerview-v7:26.0.1'
Aldemir Gomes
źródło
Na tej stronie używaj tylko angielskiego . Jeśli wolisz używać portugalskiego, możesz skorzystać z Stack Overflow em Português .
Tom Zych,
-1

Po prostu wyczyść swój projekt i buduj ponownie.

./gradlew  app:clean app:assembleDebug

Ale to nie działa, gdy targetSdkVersion lub compileSdkVersion ma 25.

Esdras
źródło