Testuję nowy interfejs API Map Google w wersji 2 na Androida i po uruchomieniu aplikacji pojawia się następujący komunikat:
Działa na emulatorze 4.1.
Oto mój AndroidManifest.xml
plik:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.maptest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<permission
android:name="com.example.maptest.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- Require OpenGL ES version 2 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="##myapikey##"/>
</application>
</manifest>
Plik MainActivity.java:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Plik activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
</RelativeLayout>
Kliknięcie „Aktualizuj” powoduje zawieszenie aplikacji z następującym śladem stosu:
E/Trace(1034): error opening trace file: No such file or directory (2)
W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1
D/gralloc_goldfish(1034): Emulator without GPU emulation detected.
D/AndroidRuntime(1034): Shutting down VM
W/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
E/AndroidRuntime(1034): FATAL EXCEPTION: main
E/AndroidRuntime(1034): android.content.ActivityNotFoundException: No Activity found to handle Intent
{ act=android.intent.action.VIEW dat=http://play.google.com/store/apps/details? \
id=com.google.android.apps.bazaar flg=0x80000 pkg=com.android.vending }
E/AndroidRuntime(1034): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
E/AndroidRuntime(1034): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
E/AndroidRuntime(1034): at android.app.Activity.startActivityForResult(Activity.java:3351)
E/AndroidRuntime(1034): at android.app.Activity.startActivityForResult(Activity.java:3312)
E/AndroidRuntime(1034): at android.app.Activity.startActivity(Activity.java:3522)
E/AndroidRuntime(1034): at android.app.Activity.startActivity(Activity.java:3490)
E/AndroidRuntime(1034): at com.google.android.gms.internal.c$2.onClick(Unknown Source)
E/AndroidRuntime(1034): at android.view.View.performClick(View.java:4084)
E/AndroidRuntime(1034): at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime(1034): at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime(1034): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(1034): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1034): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1034): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1034): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1034): at dalvik.system.NativeStart.main(Native Method)
Odniosłem się również do projektu usług Google Play. Co ja tu robię źle?
AKTUALIZACJA
Odpowiedni błąd w narzędziu do śledzenia problemów Google ( https://issuetracker.google.com/issues/35822258 ) został rozwiązany jakiś czas temu.
Teraz możesz używać Google Maps Android API w emulatorze i tworzyć urządzenia wirtualne z usługami Play, jak opisano w tej odpowiedzi:
android
google-maps
android-mapview
google-maps-android-api-2
soren.qvist
źródło
źródło
Odpowiedzi:
Według dyskusji z Android Developers w Google+, uruchomienie nowego Map API na emulatorze nie jest obecnie możliwe.
(Komentarz pochodzi od Zhelyazko Atanasova wczoraj o 23:18, nie wiem, jak bezpośrednio do niego linkować)
Ponadto nie widać części „ (przez Bazaar) ” podczas uruchamiania z rzeczywistego urządzenia, a przycisk aktualizacji otwiera Sklep Play. Zakładam, że Bazaar ma zapewniać usługi Google Play na emulatorze Androida, ale nie jest jeszcze gotowy ...
źródło
AKTUALIZACJA
Interfejs API map Google v2 jest teraz instalowany na najnowszych obrazach systemu Google (api: 19 ARM lub x86).
Twoja aplikacja powinna więc działać z nowymi obrazami. Nie ma potrzeby instalowania tych plików.
Próbowałem uruchomić aplikację Android Google Maps V2 pod emulatorem i kiedy wreszcie uruchomiłem usługi Google Play, zaktualizowałem mój zestaw SDK do wersji 4 usług Google Play, a mój emulator nie uruchamiał już mojej aplikacji.
Teraz opracowałem, jak zaktualizować mój emulator z mojego tabletu Transformer. (Nie potrzebujesz tabletu, ponieważ możesz pobrać poniższe pliki).
Użyłem Titanium Backup do wykonania kopii zapasowej mojego Asus Eee Pad Transformer (TF101), a następnie pobrałem pliki APK com.android.vending i com.google.android.gms z kopii zapasowej.
Zainstalowałem je na emulatorze skonfigurowanym z platformą: 4.1.2, API Level: 16, CPU Intel / Atom x86) i moja aplikacja Google Maps V2 znów działa.
To wszystko… żadne inne kroki dotyczące / system / app nie były wymagane.
Moja aplikacja korzysta tylko z Google Maps API, bez wątpienia konieczne są dalsze kroki, jeśli korzystasz z innych usług Google Play.
Nowe pliki dla najnowszych usług Google Play:
com.google.android.gms-20140218.apk
com.android.vending-20140218.apk
Te same instrukcje co poprzednio: utwórz nowy emulator z dowolnym procesorem / ABI , celem interfejsu API innego niż Google (działają wersje 10-19) i włącz lub wyłącz emulację GPU , a następnie zainstaluj pliki:
Jeśli uaktualniasz istniejący emulator, może być konieczne odinstalowanie poprzednich wersji poprzez:
To wszystko.
źródło
adb uninstall com.android.vending
iadb uninstall com.google.android.gms
. Po zainstalowaniu powyższych pakietów moja aplikacja działa, aleEGL_emulation: eglSurfaceAttrib not implemented
w logu są wyświetlane komunikaty ostrzegawcze i żadna mapa nie jest widoczna w aplikacji. Uważam, że jest to problem z emulatorem / GPU. Mój procesor graficzny działaRadeon HD6870
i korzystałem z Androida 4.1.2 bez interfejsów API Google na emulatorze.Spędziłem około jednego dnia, aby skonfigurować nowy interfejs API gmaps (Google Maps Android API v2) na emulatorze Androida. Żadna z metod, które znalazłem w Internecie, nie działała poprawnie dla mnie. Ale nadal to zrobiłem. Oto jak:
W innych wersjach nie mogłem skonfigurować z powodu różnych błędów podczas instalowania niezbędnych aplikacji.
2) Uruchom emulator i zainstaluj następujące aplikacje:
Możesz to zrobić za pomocą następujących poleceń:
2, 1) 2,
adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2) 2, 3 - 2, 5
adb shell chmod 777 /system/app
)
adb push Each_of_the_3_apk_files.apk /system/app/
Linki do pobierania plików APK . Skopiowałem je z mojego zrootowanego urządzenia z Androidem.
3) Zainstaluj usługi Google Play i Google Maps na emulatorze. Mam błąd 491, jeśli instaluję je ze sklepu Google Play . Wgrałem aplikacje do emulatora i uruchomiłem instalację lokalnie. (Możesz użyć,
adb
aby to zainstalować). Linki do aplikacji:4) Po wykonaniu tych czynności pomyślnie uruchomiłem próbkę demonstracyjną na emulatorze. Oto zrzut ekranu:
źródło
adb install com.google.android.apps.maps-1.apk
iadb install com.google.android.gms-2.apk
.Odpowiadam na to pytanie po raz drugi, ponieważ rozwiązanie, które wypróbowałem, które na początku nie działało, teraz działa i mogę odtworzyć kroki, aby zadziałało :)
Miałem też przeczucie, że winowajcą jest brak sklepu Google Play, więc próbowałem zainstalować Google Play Store na emulatorze, kierując się radą pod tym linkiem i połączonym tym linkiem . Miałem pewne trudności, ale w końcu udało mi się zainstalować Google Play Store i przetestowałem go, pobierając losową aplikację. Jednak aktywność map nadal wyświetlała komunikat z przyciskiem „Aktualizuj”. Ten przycisk zaprowadziłby mnie do sklepu, ale tam otrzymywałbym komunikat „nie znaleziono przedmiotu”, a mapy nadal nie działały. W tym momencie poddałem się.
Wczoraj przez przypadek uruchomiłem tę samą aplikację testową i zadziałała! Byłem bardzo zdezorientowany, ale szybko zrobiłem różnicę z emulatora, w którym działa, i nowy, czysty i określiłem dwie aplikacje na działającym w / data / app / katalog: com.android.vending-1. apk i com.google.android.gms-1.apk. Jest to dziwne, ponieważ kiedy instalowałem Google Play Store zgodnie z instrukcjami z tych stron, wysyłałem Phonesky.apk, GoogleServicesFramework.apk i GoogleLoginService.apk i do innego folderu / systemu / aplikacji.
W każdym razie, teraz Android Google Maps API v2 działa na moim emulatorze. Oto kroki, aby to zrobić:
Utwórz nowy emulator
To są ustawienia, które działają dla mnie. Nie znam innych.
Uruchom emulator
zainstaluj com.android.vending-1.apk i com.google.android.gms-1.apk za pomocą polecenia instalacji ADB
Mapy Google powinny teraz działać w Twoim emulatorze.
źródło
Stworzyłem (niemiecki) opis, jak to działa . Zasadniczo potrzebujesz emulatora z co najmniej poziomem API 9 i bez interfejsów API Google. Następnie musisz pobrać pakiety APK z zrootowanego urządzenia:
i zainstaluj je w emulatorze:
Możesz nawet uruchomić natywną aplikację Google Maps, jeśli masz emulator z co najmniej poziomem API 14 i dodatkowo zainstalować
com.google.android.apps.maps-1.apk
Baw się dobrze.
źródło
Próbowałem uruchomić Android Google Maps v2 pod emulatorem i znalazłem na to wiele sposobów, ale żaden z nich nie działał dla mnie. Zawsze mam to ostrzeżenie w Logcat
Google Play services out of date. Requires 3025100 but found 2010110
i gdy chcę zaktualizować usługi Google Play na emulatorze nic się nie stało. Problem polegał na tym, że plik APK com.google.android.gms nie był zgodny z wersją biblioteki w moim Android SDK.Zainstalowałem te pliki „com.google.android.gms.apk”, „com.android.vending.apk” na moim emulatorze, a moja aplikacja Mapy Google v2 działała dobrze. Żaden z pozostałych kroków dotyczących / system / app nie był wymagany.
źródło
Ta aplikacja nie będzie działać, dopóki nie zaktualizujesz Usług Google Play. Próbowałem tego przez tak długi czas, ale nadal nie dostałem mapy ... Pojawia się tylko pusty ekran, nawet jeśli zmodyfikowałem usługę Google Play podaną w poniższym komentarzu ..
Sprawdź plik manifestu usług Play i sprawdź kod wersji pliku APK com.google.android.gms. Poniżej jest to „3136110”. Pobierz te pliki APK i zainstaluj z wiersza poleceń DOS, ale przed instalacją uruchom docelowy emulator.
Mam te pliki APK z tego linku .
źródło
Rozwiązałem ten problem, wykonując następujące kroki:
W emulatorze:
Musisz korzystać z najnowszego API
Google APIs(Google Inc.)-API Level 19
.Zrób resztę rzeczy umieszczonych na zrzucie ekranu.
Klucz API:
Utwórz nowy klucz API i dokładnie sprawdź klucz Google Map API i klucz SHA.
Usługi Google Play:
Musisz pobrać najnowsze usługi Google Play com.android.vending-4.8.20.apk. W tej witrynie, jeśli usługi Google Play nie działają, oznacza to, że możesz znaleźć wiele witryn w Internecie o nazwie
com.android.vending 4.8.20.apk
.możesz uruchomić usługi Google Play za pomocą wiersza polecenia
adb install com.android.vending 4.8.20.apk
.Uwaga: musisz pobrać najnowsze usługi Google Play, ponieważ z roku na rok najnowsza wersja będzie aktualizowana w Internecie.
wyjście :
źródło
Po aktualizacji do ADT 22.0.1, z powodu prywatnych bibliotek Androida, usługa Google Maps wyświetlała błąd i aplikacja uległa awarii. W końcu znalazłem rozwiązanie i zadziałało.
Wystarczy zainstalować bibliotekę usług Google Play, a następnie przejść do
google-play-service/libproject/google-play-services_lib
zhttps://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b
. Zaimportuj to do swojego obszaru roboczego. Wyczyść projekt, w którym chcesz używać gogole-play-services-lib, a następnie utwórz go ponownie i przejdź do projektu -> Właściwości -> Java BuildPath -> wybierz „Prywatne biblioteki Androida, zależności systemu Android, usługa google-play”W samych Właściwościach przejdź do Androida, a następnie wybierz dowolną wersję, a następnie wybierz dodaj i wybierz google-play-service-lib, a następnie naciśnij zastosuj i na koniec OK.
W końcu przejdź do Project -> Android Tools -> Android Support Libraries. Zaakceptuj licencję i po zainstalowaniu uruchom swój projekt.
Będzie działać dobrze.
źródło
Znalazłem fajne rozwiązanie, które pozwala przetestować aplikację w emulatorze, a także nie wymaga powrotu do starszej wersji biblioteki. Zobacz odpowiedź na pytanie o przepełnienie stosu Uruchamianie Map Google v2 na emulatorze Androida .
źródło
Z Menedżera Android SDK zainstaluj: Dodatki: usługi Google Play
źródło
to działa dla mnie aktualna wersja to 10.0.1
źródło