Moje podejście do testowania polega na użyciu wielu emulatorów różnych konfiguracji (marek / modeli / wymiarów / apis / celów).
Niedawno zaktualizowałem do Androida Studio 3.1.
Moja aplikacja działa od 3 lat i używa Google Maps v2 i chciałbym ją nadal utrzymywać (Google się śmieje).
Każdy emulator (inny niż Nexus 5), który mamteraz nie działa, ponieważ mówi, że Usługi Google Play wymagają aktualizacji i wydaje się, że nie ma ścieżki do ich rozwiązania. Emulatory Nexusa 5 nie mają błędu, ale wyświetlają puste tło mapy.
Kiedy próbuję usunąć jakąkolwiek zależność od usług Google Play, staje się to śliskim nachyleniem (głównie zastępując usługę lokalizacji z fuzją).
Pytanie: Jeśli mam zależność od usług Google Play (mojamoże pierwszy błąd?) Czy w mojej aplikacji Google Maps v2 ograniczam się do emulatorów Nexusa 5 (które wydają się mieć własne problemy)? Jeśli nie, to jak zaktualizować inne dobre emulatory (Pixel, inny Nexus, Galaxy ...)?
Widzę inne pytania i nadal się na nich gapię, ale chciałbym zrozumieć, jaka jest praktyczna ścieżka przyszłej konserwacji - usuwanie zależności, uaktualnianie czegoś ...
Na przykład:
Błąd niezwiązany z Nexusem 5 to:
(aplikacja) nie uruchomi się, chyba że zaktualizujesz usługi Google Play
(Duży tłuszcz Wyświetlany jest również przycisk „Aktualizuj”, który zgłasza wyjątek - prawdopodobnie dlatego, że nie jest zainstalowany na emulatorze).
Odpowiedni błąd w Nexusie 5 to:
E / Google Maps Android API: Google Maps Android API v2 obsługuje tylko urządzenia z OpenGL ES 2.0 i nowszymi
(Którego nie mogę włączyć w menedżerze AVD dla emulatorów Nexusa 5).
Oto typowe szaleństwo stopniowe - starałem się podnieść usługi gier do 11.8.0 i ta niefortunna magia się wydarzyła (z aplikacji gradlew: zależności):
+ --- com.google.android.gms: play-services-maps: 11.8,0 -> 12.0.1 | + --- com.google.android.gms: play-services-base: 12.0.1 | | + --- com.google.android.gms: play-services-piwnica: 12.0.1 | | |
+ --- com.android.support:support-v4:26.1.0 () | | | --- com.google.android.gms: play-services-basement-licence: 12.0.1 | |
+ --- com.google.android.gms: play-services-tasks: 12.0.1 | | | + --- com.google.android.gms: play-services-piwnica: 12.0.1 () | | | --- com.google.android.gms: play-services-tasks-licence: 12.0.1 | | --- com.google.android.gms: play-services-base-licence: 12.0.1 |
+ --- com.google.android.gms: play-services-piwnica: 12.0.1 (*) | --- com.google.android.gms: play-services-maps-licence: 12.0.1
Uroczystość
@xiaomi poprawnie przypisało problem usługom (lub konkretnie mapom usług) 12.0.1, więc po kilku bitwach stopniowych podbiłem wszystkie gry- * do 11.8.0 i emulatory inne niż Nexus działają.
Zdobyta wiedza:
- Nigdy nie ślepo postępuj zgodnie ze wskazówkami ostrzegającymi o stopniach, aby aktualizować wersje!
- „gradlew app: dependencies” to twój przyjaciel.
Epilog
Pomyśl wiele razy zanim to zrobisz:
Odpowiedzi:
1 dla odpowiedzi № 1Często występuje opóźnienie między najnowszą usługą Google Play, której możemy użyć, a tą, którą może obsłużyć najnowszy emulator.
Rozwiązaniem, gdy aplikacja na emulatorze prosi o aktualizację, jest użycie niższej wersji usługi Google Play.
Jeśli mapa wygląda na pustą, oznacza to zwykle problem z rejestracja klucza