Aktualizacja biblioteki usług Google Play i brakujący symbol @ integer / google_play_services_version


186

Podczas uaktualniania mojego projektu do najnowszej wersji usług Google Play (wersja 4.0, wydana na Halloween 2013 ), należy teraz dodać nowy tag do AndroidManifest.xmlpliku.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

Niestety, kiedy próbuję to zrobić, pojawia się błąd kompilacji:

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

Następnie mogę przejść do pliku w google-play-services_lib/res/values/version.xmli wyświetlić surową liczbę całkowitą dla tego symbolu:

<integer name="google_play_services_version">4030500</integer>

A następnie włóż go z powrotem do mojego AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

Wykonanie tego działa absolutnie dobrze, a następnie mogę dobrze skompilować i uruchomić projekt i aplikację. Ale jest to zdecydowanie niepożądana poprawka z oczywistymi problemami z możliwością aktualizacji.

Jakieś pomysły?


mam dokładnie ten sam problem - ale nie mogłem znaleźć liczby całkowitej.
Björn Hallström,

Odpowiedzi:


256

Dla wszystkich korzystających z Eclipse, powinieneś to zrobić.

Eclipse -> import -> istniejący kod Androida -> przeglądaj -> przejdź do FOLDERU google-play-services_lib (android-sdk / extras / google / google_play_services / libproject).

Następnie w swoim projekcie

kliknij i kontroluj -> właściwości -> android -> biblioteki, dodaj -> wybierz właśnie zaimportowany projekt -> ok


Próbowałem tego (zgodnie z instrukcjami z tego drugiego pytania, aby zlokalizować folder), ale Eclipse mówi, że nie może zapisać .projectpliku we wskazanym google-play-services_libkatalogu. Oczywiście bezpośrednim powodem jest to, że Eclipse nie może pisać w katalogu Program Files, w którym znajduje się SDK, ale bardziej konkretnym pytaniem byłoby, dlaczego modyfikacja .projectpliku (który najwyraźniej należy do SDK i dlatego powinien być „poprawny”) jest konieczna na pierwszym miejscu.
LUB Mapper

Nie widziałem tego wcześniej, więc nie wiem dokładnie, jak to naprawić. Mając to na uwadze, chyba że zostało to wyraźnie zmodyfikowane, nie sądzę, że błąd istnieje w folderze. Możliwe, że jest po prostu nieaktualny i należy go ponownie pobrać (raczej nie jest to problem, ale nigdy nie wiadomo).
PSchuette,

Czy wystąpił ten błąd podczas próby dodania biblioteki lub podczas importowania projektu?
PSchuette,

Dzięki - pracowałem dla mnie nad Eclipse. Myślałem, że zrobiłem to dobrze, ale zrobiłem to ponownie i to naprawiło problem kompilatora.
Anna Billstrom

4
FOLDER, który musisz zaimportować, znajduje się tutaj: dodatki \ google \ google_play_services \ libproject
Kamil Szot

78

Uwaga: ta poprawka może dotyczyć tylko użytkowników IntelliJ !! (Więcej informacji na dole tego postu, które powinny dotyczyć wszystkich).

Naprawiono ten problem! Używam IntelliJ i okazuje się, że właśnie źle skonfigurowałem sposób, w jaki włączałem google-play-services_libmoduł jako zależność.

Ponieważ naprawiłem to całkowicie za pomocą GUI, a nie przez edycję jakichkolwiek plików, oto kilka zrzutów ekranu:

Krok 1 - Wstępna struktura projektu Więc moja struktura projektu zaczęła wyglądać tak ...

Krok 2 - Usunięto bibliotekę usług Google Play Następnie usunąłem google-play-servicesbibliotekę z listy zależności, zaznaczając ją, a następnie klikając przycisk minus u dołu. Zauważ błąd u dołu okna dialogowego, ponieważ mój projekt absolutnie wymaga tej biblioteki. Ale nie martw się, dodamy go wkrótce!

Krok 3 - Dodano usługi Google Play w zależności od modułu Następnie dodałem google-play-services_libjako zależność modułu zamiast zależności biblioteki. Następnie kilka razy nacisnąłem przycisk strzałki w górę u dołu, aby przenieść tę zależność na górę listy. Ale zauważ błąd na dole (jeszcze nie skończyliśmy!)

Krok 4 - Kliknij żarówkę, aby dodać bibliotekę usług Google-Play jako zależność Następnie kliknąłem żarówkę u dołu okna dialogowego w obszarze komunikatu o błędzie, aby wyświetlić to małe okienko wyskakujące, które daje dwie możliwości ( Dodaj do zależności ... lub Usuń bibliotekę ). Kliknij Dodaj do zależnościami ... opcji!

Krok 5 - Dodaj bibliotekę do modułu google-play-services_lib Powinno pojawić się nowe małe okno dialogowe. Dało mi to dwie możliwości, jedną dla mojego głównego projektu (nazwa jest niewyraźna), a drugą dla google-play-services_libprojektu. Twój może mieć o wiele więcej w zależności od twojego projektu (jak możesz zobaczyć actionbarsherlock, takie rzeczy). Wybierz google-play-services_libi kliknij OK!

I w końcu gotowe! Mam nadzieję, że pomoże to komuś innemu!

Dalsze informacje

Wydaje mi się, że przyczyną tego problemu było na początku, ponieważ myślałem , że poprawnie włączyłem cały google-play-services_libprojekt do mojego ogólnego projektu ... ale tak naprawdę tego nie zrobiłem, a zamiast tego poprawnie tylko załączyłem plik jar ( google-play-services_lib/libs/google-play-services.jar). Ten plik jar zawiera tylko kod, a nie wartości zasobów Androida, i dlatego taka @integer/google_play_services_versionwartość nigdy nie była tak naprawdę w moim projekcie. Ale kod mógł zostać użyty w moim projekcie, dzięki czemu wydawało się, że wszystko jest w porządku.

Na marginesie: wydaje się, że naprawienie tego problemu naprawiło GooglePlayServicesUtil.getErrorDialog(...).show()awarię, którą miałem wcześniej. Ale mogło to również zostać naprawione przez aktualizację, nie tak naprawdę 100% pewności.


2
Nie działa dla mnie. Nie mam „żarówki u dołu okna dialogowego w obszarze komunikatu o błędzie, aby wyświetlić to małe okienko wyskakujące, które daje dwie możliwości”
Vadorequest,

2
W twoim przypadku może spróbuję całkowicie usunąć usługi Google Play z twojego projektu, a następnie ponownie zaimportować. Ponieważ ten brakujący całkowity problem występuje tylko wtedy, gdy Usługi Google Play są importowane nieprawidłowo, dobrym pomysłem może być rozpoczęcie od zera.
Charles Madere,

1
@Vadorequest możesz również wybrać moduł google-play-services-lib i dodać plik google-play-services.jar jako zależność modułu (! Do modułu google-play-services-lib!)
Su-Au Hwang

2
Oprócz tej odpowiedzi (specyficznej dla IntelliJ), jeśli planujesz faktycznie korzystać z metod / klas bibliotek, musisz przejść do Plik> Struktura projektu> wybrać moduł google-play-services_lib> Zależności i zaznaczyć „Eksportowane” dla the google-play-services.jar
Su-Au Hwang

2
Podsumowanie: dodaj katalog libproject jako moduł i uzależnij go od głównego projektu, aby uzyskać wartość całkowitą z katalogu
libproject

31

Napotkałem ten sam problem i najwyraźniej Eclipse jakoś zostawił version.xmlplik w / res / values ​​z oryginalnego google-play-services_libprojektu podczas tworzenia kopii. Wyciągnąłem plik z oryginalnego projektu i wkleiłem go w kopii projektu, a problem został rozwiązany.


To było rozwiązanie, które mnie naprawiło, to niesamowity nadzór Google, jeśli mnie o to poprosisz.
Henrique de Sousa,

Dzięki kolego, to naprawiło mój problem
Fabii

1
To naprawiło mój problem. Dlaczego import zaćmienia pominął ten plik? Jakieś wskazówki?
nizam.sp

24

W Eclipse po zaimportowaniu biblioteki Google Play do obszaru roboczego projektu właśnie skopiowałem plik version.xml z

google-play-services_lib/res/values/version.xml

do

MyProjectName/res/values/version.xml

3
W ten sposób zadziała, ale problem polega na tym, że uaktualnienie do nowszej wersji biblioteki usług Google Play jest trochę bardziej irytujące. Prawdopodobnie będziesz musiał zastąpić version.xmlplik przy każdej aktualizacji.
Charles Madere,

20

Każdemu, kto używa gradle: nie dołączaj źródła projektu, ale pobierz go za pomocą SDK Manager i dodaj ten wiersz do zależności:

compile 'com.google.android.gms:play-services:4.0.30'

Tyle tylko, że go nie znajduje: Błąd: Wystąpił problem podczas konfigurowania projektu „: aplikacja”. > Nie można rozwiązać wszystkich zależności dla konfiguracji „: app: _debugCompile”. > Nie można znaleźć żadnej wersji pasującej do com.google.android.gms: play-services: 6.1. +. Szukano w następujących lokalizacjach: jcenter.bintray.com/com/google/android/gms/play-services/… jcenter.bintray.com/com/google/android/gms/play-services
matteo

plik: /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml plik: / home / teo / Documents / Programy / android-studio-new / sdk / dodatki / android / m2repository / com / google / android / GMS / play-services / Wymagane przez: xxxxxxx: app: nieokreślona
Matteo

Ścieżka, w której szuka biblioteki, wydaje się nie pasować do lokalizacji, w której menedżer sdk faktycznie ją pobrał, ale nawet po utworzeniu dowiązania symbolicznego problem nie został rozwiązany. Chyba nie jestem w stanie dowiedzieć się, jaki plik lub folder powinien znaleźć. Dowolny pomysł?
matteo,

1
Aby zobaczyć, jakie masz wersje: „ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services”. Aby uzyskać nowsze wersje, uruchom menedżera SDK i zaktualizuj wymagane komponenty. Nie zadzieraj z dowiązaniami symbolicznymi.
Sofi Software LLC

12
  1. Zainstaluj „Google Play Services” i „Google Repository” z Android SDK Manager.
  2. Dodaj linię compile 'com.google.android.gms:play-services:4.1.32@aar'do swojego build.gradle.
  3. W rezultacie zasób @integer/google_play_services_versionbędzie dostępny.

1
Dodałem ten kompilator „com.google.android.gms: play-services: 4.4.52”
powder366

to mi zrobiło. Nikt nie opublikował, jak wyglądał końcowy wynik sekcji zależności w build.gradle ... byłoby to pomocne
snowking16

10

Poza tym wydaje się, że Twój projekt jest połączony ze starszą wersją projektu biblioteki usług Play. Zalecane przez Google podejście polega na znalezieniu projektu biblioteki w zestawie SDK i wykonaniu kopii lokalnej. Oznacza to jednak, że za każdym razem, gdy aktualizujesz projekt biblioteki Play Services za pomocą Menedżera SDK, musisz również zastąpić swoją kopię nową.


Tak, zintegrowałem bibliotekę z moim projektem, umieszczając kopię plików pobranych za pomocą Menedżera SDK systemu Android w moim katalogu roboczym. Zaktualizowałem również bibliotekę do nowej wersji, robiąc to samo (skopiowałem pliki z katalogu Android SDK i zastąpiłem istniejące w moim projekcie).
Charles Madere,


7

po aktualizacji do ostatniej wersji miałem ten problem ze wszystkimi moimi projektami, ale został rozwiązany po prostu dodając ponownie odwołanie do biblioteki:

jeśli nie masz biblioteki w swoim obszarze roboczym w Eclipse, możesz dodać ją za pomocą: File-> Import-> Existing Android Code Into Workspace-> przeglądaj i przejdź do google-play-services_libprojektu lib, ( android-sdk/extras/google/google_play_services/libproject).

wprowadź opis zdjęcia tutaj

następnie usuwanie /bini /genfoldery mojego projektu (coś podobnego do opcji czyszczenia) i ponowne budowanie mojego projektu.


ale to czyni apk 5 MB cięższym
Siddharth

6

Rozwiązany dla Eclipse

Wykonaj kolejne kroki:

  1. Zaimportuj folder google-play-services_lib jako projekt, używając polecenia import-> Istniejący kod Androida do obszaru roboczego
  2. Z właściwości projektu wybierz sekcję Android, na dole W sekcji Biblioteka kliknij Dodaj i wybierz google-play-services_lib i Zastosuj Kliknij link http://i.stack.imgur.com/opSeJ.png, aby zobaczyć zrzut ekranu

Mój google-play-services_libbył wF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti

5

Witryna Google dla programistów Androida zawiera instrukcje „dodawania usług Google Play do swojego projektu”, a także dotyczy uaktualnienia wersji usług Play. Istnieje nawet menu rozwijane, aby wyświetlić instrukcje dla Eclipse, Android Studio lub „Coś innego”. To byłoby najlepsze miejsce do przeglądania instrukcji na wypadek ich zmiany. Strona jest tutaj:

http://developer.android.com/google/play-services/setup.html

Ale ponieważ większość odpowiedzi tutaj dotyczy Eclipse, oto krótkie podsumowanie aktualizacji Usług Play za pomocą Android Studio

  1. Otwórz plik build.gradle w katalogu modułu aplikacji. Uwaga: projekty Android Studio zawierają plik build.gradle najwyższego poziomu i plik build.gradle dla każdego modułu. Edytuj plik dla swojego modułu aplikacji.
  2. Zaktualizuj regułę kompilacji w sekcji „Zależności”, aby odnieść się do wersji usług odtwarzania pobranych na komputer programisty.

Numer wersji wersji usług Play pobranych na komputer programisty można znaleźć w folderze \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services, jak wyjaśniono tutaj : Jak dopasować wersję usług Google Play do wersji instalacyjnej?


Wreszcie dobra, jasna odpowiedź dla początkujących użytkowników Androida. Ta odpowiedź powinna być umieszczona wyżej.
Jelle

4

W przypadku Eclipse właśnie dodałem odwołanie do projektu do google-play-services_lib w:

Properties-Android W panelu Library (dolny panel) upewnij się, że na liście znajduje się google-play-services_lib. Jeśli nie, kliknij przycisk Dodaj .. i wybierz google-play-services_lib.


3

Miałem ten sam problem, pliku version.xml nie ma w google-play-services_lib. Po prostu uruchom menedżera sdk i zaakceptuj aktualizację, szczególnie rzeczy związane z „dodatkami”.


2

Podczas importowania google-play-services_lib sprawdź kod wersji zdefiniowany w AndroidManifest.xml i version.xml. Znalazłem różnicę w kodzie wersji i zmieniłem go na 4242000 . Po dokonaniu zmiany nie ma już błędu kompilacji w @ integer / google_play_services_version .wprowadź opis zdjęcia tutaj


2
To nie jest dobry sposób na zrobienie tego. Będziesz musiał ręcznie aktualizować za każdym razem, gdy aktualizujesz Usługi Google Play.
PSchuette,

2

Naprawiono przez dodanie usług Google Play do mojego modułu: plik kompilacji klasy aplikacji. Dokumentacja mówi również o aktualizacji wersji podczas aktualizacji GMS.

dependencies {

compile 'com.google.android.gms:play-services:9.6.1'

} 

1

Poniżej znajdują się główne działania, które pozwolą uniknąć wielu błędów podczas korzystania z usługi Google Play Lib:

  1. Skopiuj projekt lib do obszaru roboczego projektów Eclipse.
  2. Docelowym pakietem SDK dla projektu lib usługi Google Play powinien być „Google
  3. Interfejs API „3-Metadane należy dodać do pliku manifestu.
  4. Docelowy zestaw SDK projektu powinien wynosić 17, chyba że całkowicie zaktualizowałeś do 19, ponieważ w niektórych przypadkach 19 nie działa dobrze.

1

Miałem ten sam problem z projektem korzystającym z Maven i IntelliJ. Usługi Google Play są dodawane jako zależność maven. Kompilacja maven działała dobrze z linii poleceń, ale IntelliJ narzekał na ten brakujący symbol@integer/google_play_services_version

W moim przypadku wymusiłem aktualizację plików maven POM i to rozwiązało problem.


1

W moim przypadku musiałem skopiować FOLDER Google-play-services_lib do tego samego NAPĘDU kodów źródłowych moich aplikacji

  • F: \ Products \ Android \ APP * .java <- Moje aplikacje są tutaj, więc skopiowałem do folderu poniżej
  • F: \ Products \ Android \ libs \ google-play-services_lib

1

Gdy nie używasz IDE, ale używasz kompilacji z linii poleceń (używając ant i ndk-build), oto jak to rozwiązać:

Zainstaluj wszystkie wymagane części za pomocą polecenia „android”. Następnie miej kopię google-play-service_lib / w katalogu głównym projektu. Edytuj project.properties, aby uwzględnić ten wiersz:

android.library.reference.1=./google-play-services_lib

Ale trzeba android update project -p . -t android-22na google-play-services_libpoczątku. Równolegle dodaj <property name="android.library.reference.1" value="./google-play-services_lib"/>do swojego build.xml(zminimalizowałem mój build.xmli porzuciłem .properties).
Ciro Santilli 14 冠状 病 六四 事件 法轮功

0

Miałem ten sam problem. Problem polegał na tym, że plik „google-play-services.jar” nie został poprawnie zaimportowany do mojego projektu, mimo że był częścią projektu google_play_service_lib. Jeśli używasz Eclipse, sprawdź i zobacz, czy możesz zobaczyć plik jar usług odtwarzania w sekcji Prywatne biblioteki Androida i czy jest on eksportowany przez bibliotekę.

Korzystam z narzędzi platformy Android SDK w wersji 17 (nie 19) i narzędzi Android SDK w wersji 22.0.1


0

Właśnie zaktualizowałem usługi Google Play w folderze Dodatki w Android SDK Manager


0

Problemem było dla mnie to, że projekt biblioteki i projekt korzystający z usług odtwarzania znajdowały się w różnych katalogach. Więc tylko:

  • 1. Dodaj pliki do tego samego obszaru roboczego, a następnie usuń bibliotekę.
  • 2. Uruchom ponownie zaćmienie
  • 3. Dodaj ponownie projekt biblioteki
  • 4. Wyczyść

0

Google sugeruje, aby nie tworzyć projektu bezpośrednio z katalogu SDK. Lepiej skopiować projekt lib do lokalizacji, w której znajduje się aplikacja, a następnie zaimportować go stamtąd. W przeciwnym razie następnym razem, gdy przejdziesz do importowania projektu dla innej aplikacji, będzie on już w użyciu.

https://developer.android.com/google/play-services/setup.html

Uwaga: powinieneś odwoływać się do kopii biblioteki, którą skopiowałeś do obszaru roboczego programowania - nie powinieneś odwoływać się do biblioteki bezpośrednio z katalogu Android SDK.


0

Każdy, kto szuka w 2017 r., Wersja usług gry 10.0.1 wymaga importu play-services-basement(użyj, aby być play-services-base).


Czy mógłbyś wyjaśnić coś więcej? Jak wyświetlić bieżące zależności i jak dodać więcej?
Hassan Gulzar

Zrobiłem to wszystko ręcznie i metodą prób i błędów, kiedy napisałem tę odpowiedź. Korzystanie ze stopniowania znacznie ułatwiło pracę.
goobliata,

0

Android Studio 3.3.2 w systemie Windows 10

Plik -> Unieważnij pamięć podręczną / Uruchom ponownie i pojawi się invalidate and Restartprzycisk w oknie dialogowym.


0

Miałem ten sam problem, dodaj ten 2 wiersz do swojej kompilacji. Gradle problem zostanie prawdopodobnie rozwiązany. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.