appcompat-v7: 21.0.0 ”: Nie znaleziono zasobu pasującego do podanej nazwy: attr„ android: actionModeShareDrawable ”

376

Podczas próby użycia najnowszej biblioteki obsługi aplikacji appcompat-v7 w moim projekcie pojawia się następujący błąd:

/Users/greg/dev/mobile/android_project/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0/res/values-v11/values.xml
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

Jak to naprawić?

loeschg
źródło
1
Mam problem z zaćmieniem. Miałem ponad 100 błędów, ponieważ moje narzędzia kompilacji zestawu SDK nie zostały zaktualizowane do wersji 21. Mam teraz różne błędy, więc ... przejdź do nich.
RED_
Dzisiaj odinstalowałem i ponownie zainstalowałem Extras / Android Support Library (wersja 21.0.2) i zauważam, że jej project.properties nadal niepoprawnie wskazuje na cel = android-19, który jest źródłem problemu. Powinien wynosić 21, ale jest to wygenerowany plik, którego nie można edytować ręcznie. Zobacz zaakceptowaną odpowiedź na obejście.
JulianSymes
@RED_, Nie można rozwiązać symbolu „android: Theme.Material.Light” w <style name = "AppBaseTheme" parent = "android: Theme.Material.Light"> </style> w valules-v21 w Android studio
Pankaj Nimgade
@PankajNimgade Nie rozumiem ... potrzebujesz pomocy?
RED_
@RED_, tak, desperacko potrzebuję pomocy, na moim komputerze nie mogę wykryć niczego w temacie Material Theme ani niczego, co zaczyna się od Androida w wartościach v21 \ styles, proszę mi pomóc
Pankaj Nimgade

Odpowiedzi:

598

Podczas gdy odpowiedź loeschga jest absolutnie poprawna, chcę tylko rozwinąć ją i podać rozwiązanie dla wszystkich IDE (Eclipse, IntellJ i Android Studio), nawet jeśli błędy nieznacznie się różnią.


Wymagania wstępne

Upewnij się, że pobrałeś najnowsze, extrasjak również za Android 5.0 SDKpośrednictwem SDK-Manager.

Obraz Menedżera SDK


Android Studio

Otwórz build.gradleplik modułu aplikacji i zmień go compileSdkVersionna 21. Zasadniczo nie jest konieczne zmienianie wersji targetSdkVersionSDK na 21, ale jest to zalecane, ponieważ zawsze powinieneś kierować reklamy na najnowszą wersję Androida .
Na koniec plik stopni będzie wyglądał następująco:

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

Następnie zsynchronizuj projekt.

Przypomnienie o synchronizacji stopni w Android Studio


Zaćmienie

Korzystając z v7-appcompatEclipse, musisz użyć go jako projektu biblioteki. Nie wystarczy po prostu skopiować /libsplik * .jar do folderu. Przeczytaj ten samouczek krok po kroku na developer.android.com , aby dowiedzieć się, jak prawidłowo zaimportować projekt.

Gdy tylko projekt zostanie zaimportowany, zauważysz, że niektóre foldery w /resfolderze są podkreślone na czerwono z powodu błędów, takich jak:

Błędy w środowisku Eclipse

error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material'.
error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.*'
error: Error: No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

Rozwiązanie

Jedyne, co musisz zrobić, to otworzyć project.propertiesplik android-support-v7-appcompati zmienić cel z target=android-19na target=android-21.
Następnie zrób Project --> Clean...tak, aby zmiany zaczęły obowiązywać.


IntelliJ IDEA (nie używa Gradle)

Podobnie jak w Eclipse nie wystarczy użyć tylko android-support-v7-appcompat.jar; musisz zaimportować appcompatjako moduł. Przeczytaj więcej na ten temat na tej stronie StackO-Post (kliknij) .
( Uwaga: jeśli używasz tylko .jar, uruchomisz NoClassDefFoundErrorsRuntime )

Podczas próby zbudowania projektu napotkasz problemy w res/values-v**folderach. W oknie wiadomości pojawi się komunikat:

Error:android-apt-compiler: [appcompat]  resource found that matches the given name: attr 'android:colorPrimary'.
Error:(75, -1) android-apt-compiler: [appcompat] C:\[Your Path]\sdk\extras\android\support\v7\appcompat\res\values-v21\styles_base.xml:75: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.ActionButton'.
// and so on

Rozwiązanie

Kliknij appcompatmoduł prawym przyciskiem myszy -> Otwórz ustawienia modułu (F4) -> [Zakładka zależności] Z rozwijanej listy wybierz Android API 21 Platforma -> Zastosuj

Wybierz platformę API 21

Następnie po prostu przebuduj projekt (Kompiluj -> Przebuduj projekt) i możesz zacząć.

odwrócić
źródło
2
Mam również ten sam problem w zaćmieniu po zmianie celu z target = android-19 na target = android-21 również
pojawia
1
Kiedy zmieniam AppCompat na 5.0 w Eclipse, nie buduje się on dłużej, a folder .bin jest pusty.
Clive Jefferies
1
Niesamowite, naprawdę walczyłem od 2 ostatnich dni, ale Twoja sztuczka zmieniła Androida-19 na 21 działała .. Dzięki Człowieku
Mukesh Garg
1
Za pomocą Eclipse musiałem zaktualizować cel projektu do 21 we wszystkich projektach korzystających z biblioteki appcompat, nie tylko w samym projekcie appcompat.
Bianca Daniciuc,
1
Obecnie walczę z poprzednimi problemami wspomnianymi w Eclipse / Android. To naprawdę jest ładunek niewiarygodnych nieprzenikalnych pachołków.
AndyUK
123

Jest to prawdopodobne, ponieważ nie ustawiłeś wartości compileSdkVersion21 w pliku build.gradle. Prawdopodobnie chcesz też zmienić swój targetSdkVersionna 21.

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

Wymaga to pobrania najnowszych aktualizacji zestawu SDK.

Menedżer SDK dla Androida Studio

Po pobraniu wszystkich aktualizacji (nie zapomnij również zaktualizować biblioteki / repozytorium pomocy technicznej na Androida!) I zaktualizowaniu swojego compileSdkVersion, ponownie zsynchronizuj projekt Gradle.

Edycja: dla użytkowników Eclipse lub ogólnych użytkowników IntelliJ

Zobacz odpowiedź reVerse. Ma bardzo dokładny spacer!

loeschg
źródło
2
To jest poprawna odpowiedź. Aktualizacja do 21 wymaga tego, nowych zależności appcompat, i musisz pobrać wersję 12 usług Play.
sbaar
1
I koniecznie uruchom JDK 7
Chad Bingham
1
Nadal poprawne, zobacz rozwiązanie @ reVerse. Jest dokładniejszy :)
loeschg
nie użyłem żadnego z IDE ani Gradle ... czy jest podobnie, gdy używam Anta i Notatnika?
Valen,
22

`Wykonaj poniższe kroki:

działa dla mnie. Aby rozwiązać ten problem,

1. Kliknij prawym przyciskiem myszy bibliotekę appcompat_v7 i wybierz Właściwości

2. Teraz kliknij opcję Android, Ustaw ścieżkę kompilacji projektu jako Android 5.0 (API poziom 21) Zastosuj zmiany.

3. Teraz przejdź do pliku project.properties w bibliotece appcompat_v7,

4.Ustaw cel projektu jako: target = android-21

5. Teraz Clean + Build biblioteki appcompat_v7 i twoich projektów`

madhu527
źródło
1
Użyłem twojej drogi i ustawiłem cel android-21 w projekcie i bibliotece, a następnie wyczyściłem oba i gotowe .. dzięki.
Md Mohsin,
1
gdzie mogę znaleźć bibliotekę appcompat_v7?
SleepNot
2
lib appcompat_v7 można znaleźć w: adt-bundle-windows-x86_64 -> sdk -> \ extras \ -> android \ -> support -> v7
madhu527
Ta odpowiedź w połączeniu z powyższą odpowiedzią loeschga rozwiązała ten problem w Eclipse.
Michael Todd,
12

Jeśli nie chcesz używać interfejsu API 21 jako docelowego interfejsu API, a zatem nie chcesz używać motywu materiałowego, musisz użyć starszej wersji należącej do interfejsu API 19>

compile "com.android.support:appcompat-v7:19.0.+"

Pomaga to również rozwiązać problem, zależy to tylko od tego, co chcesz osiągnąć.

Vandus
źródło
Zgadzam się z Tobą. W końcu nie wszyscy planują celować w sdk na 21.
Peacepassion
10

Napotkałem ten problem z usługami Play: 5.0.89. Aktualizacja do 6.1.11 rozwiązany problem.

pepyakin
źródło
8

W Android Studio starałem się ustawić compileSdkVersioni targetSdkVersiondo 19.

Moim rozwiązaniem było zastąpienie na dole build.gradle, z tego:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

Do starszej wersji biblioteki appcompat:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}
Gianfranco P.
źródło
korzystałem z najnowszej wersji z appcompact, ale teraz chcę przejść do wcześniejszej wersji, ale pojawia się ten błąd w folderze rozstrzelenia
Antwan
3

Dodałem kolejny projekt do mojego obszaru roboczego i próbowałem odwołać się do działania z niego w pliku manifestu i otrzymywałem ten błąd. Problem polega na tym, że niepoprawnie odwoływałem się do biblioteki. W ten sposób naprawiłem problem:

  • Kliknij projekt prawym przyciskiem myszy
  • Wybierz Właściwości
  • Kliknij Android w lewym menu
  • Kliknij Dodaj
  • Wybierz projekt biblioteki

Słoik wszedł do folderu Zależności Androida i ten błąd został naprawiony.

żywa miłość
źródło
Wykonałem twoją sekwencję. Potem miał «niedopasowanie słoika! Napraw swoje zależności »w konsoli Android, ponieważ słoiki w bibliotekach lib / i słoiki w zależnych projektach bibliotek bibliotek aplikacji i usług Google Play nie były zgodne (miały niezgodność SHA-1 i długość pliku jar). Walcząc dalej, uważam to za sukces.
Eugene Gr. Philippov
2

Upewnij się, że wyczyściłeś swój projekt w Android Studio (lub Eclipse),

To powinno rozwiązać twoje problemy

Brendon Sled
źródło
2
Czyszczenie projektu w tym przypadku nie działa, zwłaszcza jeśli właśnie pobrałeś nowy zestaw Android SDK, bibliotekę appcompat itp., Ponieważ błędy nie wyczyszczą się magicznie bez znalezienia brakujących łączy do innych bibliotek i / lub zasobów Androida. Odpowiedź ReVerse jest poprawna i najdokładniejsza dla tych, którzy nie wiedzą, jak samodzielnie rozwiązać problemy z najnowszą wersją 21 interfejsu API Androida.
ChuongPham
2

Aktualizacja do najnowszej wtyczki gradle rozwiązuje mój problem:

classpath 'com.android.tools.build:gradle:0.13.+'
avianey
źródło
0.14.0 zostało wydane nie tak dawno temu
loeschg
tak, nadal
używałem
2

Po utworzeniu drugiego projektu w obszarze roboczym w środowisku Eclipse miałem ten problem. Wydaje mi się, że to dlatego, że utworzyłem go z inną wersją zestawu SDK, co spowodowało, że napisałem bibliotekę android-support-v7-appcompat.

Próbowałem wszystko wyczyścić, ale bezskutecznie. Ostatecznie powyższa sugestia, aby edytować projekt.properties i zmienić cel = android-21 i ustawić mój projekt na Androida 5.0, naprawiłem go.

formica
źródło
2

Polecam: (Działa to po wielu dniach z błędami)

-Upewnij się, że pobrałeś:

- the Lastest SDK Platform from the latest Android version
- Android Suppor Librarie and Repository from EXTRAS 

- Ponownie załaduj ADT

-Zrób kopię bezpieczeństwa swojego projektu.

-Musisz mieć ADT, obszar roboczy i projekt, który zaimportujemy na tym samym dysku (np. C: /)

  1. Teraz usuń aplikację kompatybilną i swój projekt.

  2. W środowisku Eclipse: Plik> Importuj> Istniejący projekt Androida> Dalej> Przeglądaj (folder, w którym masz swój ADT) / sdk / extras / android / v7 / appcompat> Import> Zakończ

  3. Teraz w Eksploratorze pakietów eclipse: android-support-v7-appcompat / libs / Make na dwóch plikach JARS: Kliknij prawym przyciskiem myszy> Ścieżka budowania> Dodaj ścieżkę budowania

  4. Kliknij prawym przyciskiem myszy folder libs / folder> Ścieżka Buil> Konfiguruj ścieżkę kompilacji i sprawdź te dwa pliki JARS> OK

  5. Na górnym pasku zaćmienia> Projekt> Wyczyść

  6. Zaimportuj projekt> Plik> Importuj> Przeglądaj swój projekt> Zakończ

  7. Teraz kliknij prawym przyciskiem myszy plik projektu i android-support-v7-appcompat> Właściwości> Android> I wybierz najnowszy interfejs API, który się pojawi> OK

  8. Kliknij prawym przyciskiem myszy plik projektu> Właściwości> Android> Dodaj> android-support-v7-appcompat

  9. Na górnym pasku zaćmienia> Projekt> Wyczyść

Juldeh
źródło
2

Ten sam błąd wystąpił po zmianie wersji kompilacji SDK z API: 21 na API: 16. Problemem była wersja appcompat . Jeśli potrzebujesz użyć starszej wersji interfejsu API Androida, musisz również zmienić tę wersję appcompat. W moim przypadku ( dla API: 16 ) musiałem użyć appcompat-v7: 19. + .

Więc zastępuję zależności w build.gradle w następujący sposób,

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}

I upewnij się, że masz starsze wersje aplikacji appcompat w swoim SDK wprowadź opis zdjęcia tutaj

mili
źródło
2

Byłem na bieżąco ze wszystkim i wciąż otrzymywałem ten błąd, nie wiem dlaczego, ale myślę, że obraz został uszkodzony w dziwny sposób i po wymianie obrazu pozbyłem się błędu. Może warto spróbować z innym obrazem :)

DoruChidean
źródło
1

Mój problem polegał na tym, że miałem inne biblioteki, do których odwoływał się mój projekt, a do tych bibliotek odwoływała się inna wersja appcompat. Oto, co zrobiłem, aby rozwiązać problem:

(Zanim to zrobisz, wykonaj kopię zapasową projektu)

1) Usunąłem wszystkie foldery układu appcompat (np .: / res / layout-v11).

2) Rozwiązano problemy, które z tego wynikały, zwykle błąd w menu.xml

3) Wróć do głównego projektu i dodaj bibliotekę appcompat, wyczyść i wszystko działa!

tricknology
źródło