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.xml
pliku.
<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.xml
i 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?
android
google-play-services
Charles Madere
źródło
źródło
Odpowiedzi:
Dla wszystkich korzystających z Eclipse, powinieneś to zrobić.
Następnie w swoim projekcie
źródło
.project
pliku we wskazanymgoogle-play-services_lib
katalogu. 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.project
pliku (który najwyraźniej należy do SDK i dlatego powinien być „poprawny”) jest konieczna na pierwszym miejscu.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_lib
moduł jako zależność.Ponieważ naprawiłem to całkowicie za pomocą GUI, a nie przez edycję jakichkolwiek plików, oto kilka zrzutów ekranu:
Więc moja struktura projektu zaczęła wyglądać tak ...
Następnie usunąłem
google-play-services
bibliotekę 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!Następnie dodałem
google-play-services_lib
jako 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!)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!
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_lib
projektu. Twój może mieć o wiele więcej w zależności od twojego projektu (jak możesz zobaczyćactionbarsherlock
, takie rzeczy). Wybierzgoogle-play-services_lib
i 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_lib
projekt 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_version
wartość 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.źródło
Napotkałem ten sam problem i najwyraźniej Eclipse jakoś zostawił
version.xml
plik w / res / values z oryginalnegogoogle-play-services_lib
projektu podczas tworzenia kopii. Wyciągnąłem plik z oryginalnego projektu i wkleiłem go w kopii projektu, a problem został rozwiązany.źródło
W Eclipse po zaimportowaniu biblioteki Google Play do obszaru roboczego projektu właśnie skopiowałem plik version.xml z
do
źródło
version.xml
plik przy każdej aktualizacji.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:
źródło
compile 'com.google.android.gms:play-services:4.1.32@aar'
do swojegobuild.gradle
.@integer/google_play_services_version
będzie dostępny.źródło
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ą.
źródło
Natknąłem się również na to podczas próby użycia google_play_services_froyo.
Złożyłem ten błąd: https://code.google.com/p/google-plus-platform/issues/detail?id=734
źródło
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ź dogoogle-play-services_lib
projektu lib, (android-sdk/extras/google/google_play_services/libproject
).następnie usuwanie
/bin
i/gen
foldery mojego projektu (coś podobnego do opcji czyszczenia) i ponowne budowanie mojego projektu.źródło
Rozwiązany dla Eclipse
Wykonaj kolejne kroki:
źródło
google-play-services_lib
był wF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
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
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?
źródło
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.
źródło
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”.
źródło
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 .
źródło
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.
źródło
Poniżej znajdują się główne działania, które pozwolą uniknąć wielu błędów podczas korzystania z usługi Google Play Lib:
źródło
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.
źródło
W moim przypadku musiałem skopiować FOLDER Google-play-services_lib do tego samego NAPĘDU kodów źródłowych moich aplikacji
źródło
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:
źródło
android update project -p . -t android-22
nagoogle-play-services_lib
początku. Równolegle dodaj<property name="android.library.reference.1" value="./google-play-services_lib"/>
do swojegobuild.xml
(zminimalizowałem mójbuild.xml
i porzuciłem.properties
).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
źródło
Właśnie zaktualizowałem usługi Google Play w folderze Dodatki w Android SDK Manager
źródło
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:
źródło
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
źródło
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
).źródło
Android Studio 3.3.2 w systemie Windows 10
Plik -> Unieważnij pamięć podręczną / Uruchom ponownie i pojawi się
invalidate and Restart
przycisk w oknie dialogowym.źródło
Miałem ten sam problem, dodaj ten 2 wiersz do swojej kompilacji. Gradle problem zostanie prawdopodobnie rozwiązany. ;)
źródło