błąd zasobów w Android Studio po aktualizacji: nie znaleziono zasobu

101

Po niedawnej aktualizacji Android Studio mamy problemy ze skompilowaniem projektu, który wcześniej działał. Na początku otrzymywaliśmy następujący błąd:

/Users/james/Development/AndroidProjects/myapp/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

Zaktualizowałem cel kompilacji sdk w naszym pliku gradle do 23, co spowodowało, że ten konkretny problem zniknął, ale pozostawiło nam mnóstwo błędów pakietu apache.http (w szczególności tona pakietów apache używanych do rzeczy http już nie ma w sdk 23).

To, co chcę zrobić, to rozwiązać dziwny błąd zasobów, ale bez aktualizacji do sdk 23. Nie mam teraz czasu, aby ponownie napisać naszą bibliotekę narzędzi, aby używać nowej implementacji komponentów apache http. Czy ktoś ma jakieś pomysły?

James Dobson
źródło
Czy nie widzisz błędu w samym pliku appcompat_v7 res / values-v23 / styles.xml (a nie w twoim projekcie)?
Solace
1
Nie jesteś pewien, czy rozumiem Twoje pytanie? Otrzymywaliśmy problem w wygenerowanym pliku, jak wskazuje ścieżka do pliku w opisanym powyżej błędzie.
James Dobson,
Jeśli błąd występuje w wygenerowanych plikach, musisz zaktualizować narzędzia kompilacji w gradle, aby pasowały do ​​wersji bibliotek. tj. buildToolsVersion "23.0.1"
BK Batchelor

Odpowiedzi:

78

Zmień wersję appcompat w pliku build.gradle z powrotem na 22.2.1 (lub cokolwiek, czego używałeś wcześniej).

Tunga
źródło
5
Dzięki, to było rozwiązanie. Postępowałem zgodnie z instrukcjami tutaj: code.google.com/p/android/issues/detail?id=183122#makechanges a konkretnie rozwiązanie oferowane przez scott. Musiałem usunąć 23.0.0 w moim folderze sdk, usunąć wersję 23 sdk w menedżerze SDK, a następnie wyczyścić i odbudować
James Dobson
4
James, dzięki za rozwiązanie. Jednak jestem po prostu cholernie zdumiony tą sytuacją PITA - ponieważ nigdy nie miałem zainstalowanego appcompat-v7: 22.2.1 !!
Someone Somewhere
Czy jest na to sposób w Eclipse?
Solace
10
@Solace Eclipse jest bezużyteczne
Back Packer
6
@BackPacker No. Android Studio jest problemem. Mam dobry komputer, a skompilowanie prostej aplikacji Hello world zajmuje Android Studio.
TheRealChx101
197

Musisz ustawić compileSdkVersion na 23.

Ponieważ API 23 Android usunęło przestarzałe pakiety Apache Http, więc jeśli używasz ich do żądań serwera, musisz dodać useLibrary 'org.apache.http.legacy'do build.gradle, jak podano w tym linku:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}
Roberto B.
źródło
1
To zadziała, ale będziesz chciał się upewnić, że zainstalujesz nową wersję SDK. API 23 (platforma Android 6.0). Umożliwi to obsługę nowszych urządzeń. Dlatego po zmianie „wersji kompatybilnej z aplikacjami” na nowszą wersję będzie to wymagać nowszej wersji SDK.
JamesDeHart
4
Ta odpowiedź jest znacznie lepsza niż powrót do 22.2.1
Jörn Buitink
4
Jest to z pewnością idealna odpowiedź i oczywiście jest to właściwy sposób postępowania dla większości ludzi, jednak nie odpowiada na moje pytanie, które miało rozwiązać problem bez aktualizacji wersji sdk. Takie postępowanie niszczy bibliotekę, na której polegamy, ale nie mieliśmy wtedy czasu na aktualizację. Mamy od zaktualizowane biblioteki do korzystania z nowych funkcji i możemy teraz bezpiecznie zaktualizować do SDK 23.
James Dobson
@RobertoB. Dzięki, to dobra informacja. Zaktualizowaliśmy już naszą bazę kodów, aby korzystała z nowych bibliotek Apache, ale miejmy nadzieję, że pomoże to innym!
James Dobson
Jak to się ma do komunikatów o błędach zgłaszanych przez OP? Myślę, że compileSdkVersion jest prawidłowym obejściem, ale użycie starszej biblioteki Apache jest tylko pośrednim wymaganiem.
mdelolmo,
21

w swoich projektach plik build.gradle ... napisz jak poniżej .. rozwiązałem ten błąd, zmieniając wersję appcompat z wersji 7.23.0.0 na wersję 7.22.2.1 ..

dependencies

{

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

}

Poniższy zrzut ekranu służy do lepszego zrozumienia.

urnish
źródło
1
Nie NIE Nie .... Nie spodziewałem się tego! ALE TO DZIAŁAŁO !! Po co więc aktualizować ją do wersji 23.0.1?
sud007
Ten dostaje moje +1: nie zawsze warto po prostu zaktualizować wszystko do najnowszej wersji od razu, gdy ktoś ci powie. Ten odpowiada na pierwotne pytanie i rozwiązuje problem za mnie.
Mark Smith
10

Uwaga, nadchodzi zła odpowiedź! Ale każdy, kto nie ma bibliotek Apache, może znaleźć

compileSdkVersion 23
buildToolsVersion "23.0.0"



//...


dependencies {
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:design:23.0.0'    

}

pomocny, załatwił mi sprawę.

diesistdername
źródło
Dlaczego ma taki problem z bibliotekami Apache?
NinjaCoder
4

powinieneś zmienić wersję compiledsdkversion i targetversion na 23 w pliku build gradle specyficznym dla aplikacji. Upewnij się, że wcześniej zainstalowałeś sdk 23, wersję 6.0. Możesz obejrzeć ten vid, aby uzyskać dodatkową pomoc. https://www.youtube.com/watch?v=pw4jKsOU7go

Dinesh Sunny
źródło
2

Jeśli pojawiają się błędy nawet po pobraniu najnowszego SDK i Android Studio Jestem nowicjuszem: Co zrobiłem to 1. Pobierz najnowszy SDK (byłem) 2. Otwórz strukturę pliku-projektu (ctrl + alt + shift + S) 3. W modułach wybierz aplikację 4. na karcie właściwości. Zmień kompilację wersji SDK na api 23 Android 6.0 marshmallow (najnowszy)

upewnij się, że kompilacja wersji adk i buildtools są w tej samej wersji (23)

Mam nadzieję, że pomoże to komuś, aby nie cierpiał tak jak ja przez te kilka dni.

xsushil
źródło
2

Spróbuj dopasować wszystkie wersje:

compileSdkVersion 23
buildToolsVersion '23.0.0'
targetSdkVersion 23
compile 'com.android.support:appcompat-v7:23.0.0'

To dla mnie praca.

Ganesh Jadhav
źródło
1

compileSDK powinien pasować do wersji appCompat. Docelowy SDK może nadal mieć 22 lata (np. W przypadku, gdy nie zaktualizowałeś jeszcze do nowego modelu uprawnień)

cwiesner
źródło
1

Jeśli masz :

/Users/james/Development/AndroidProjects/myapp/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

Błąd, trzeba zmienić appcompat, buildtools, sdkdo 23 , ale jeśli nie jak to zmienić i musi być zrobić 22 to zrobić:

  • kompiluj 23
  • cel 22
Adnan Abdollah Zaki
źródło
0

Działa tylko wtedy, gdy plik build.grade został zmieniony na:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "blablabla"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
}
Sanderson
źródło
0

Zauważyłem, że nie mam zainstalowanego SDK 23. Więc najpierw go zainstalowałem, a potem ponownie zbudowałem mój projekt. I działało dobrze. Również compilesdkVersion powinno być 23

Arun Alo Chakraborty
źródło
0

Po pierwsze,

Spróbuj sprawdzić folder SDK, dla mnie był to mój dokument / appdata / sdk .... itd. Więc zasadniczo mój folder sdk nie został w pełni pobrany, głównie źródłem tego problemu. Musisz albo użyć innego, w pełni pobranego pakietu SDK dla systemu Android (w tym sekcji Narzędzia i dodatki, których naprawdę potrzebujesz) lub użyć pakietu SDK Eclipse, który możesz pobrać wcześniej, do rozwoju Eclipse dla Androida. Następnie ponownie zbuduj-> wyczyść projekt.

Warto spróbować.

Adnan Bal
źródło
0

Zaktualizuj, aby używać API 23 (Android 6.0) lub zmień wersję appcompat-v7 na 22.2.2 w Gradle. To działa dla mnie po dodaniu usługi Google Play

Lew
źródło
0

Metoda 1: To pokazuje. Nie zainstalowałeś Api 23. Dlatego zainstaluj API 23.

Metoda 2:

Zmień wersję appcompat w pliku build.gradle z powrotem na 22.0.1 (lub mniej).


źródło