Ich teste die neue Google Maps API V2 für Android und erhalte diese Meldung, wenn die App gestartet wird:
Dies läuft auf einem 4.1-Emulator.
Hier ist meine AndroidManifest.xml
Datei:
<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>
Datei 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;
}
}
Datei 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>
Wenn Sie auf "Aktualisieren" klicken, stürzt die App mit dem folgenden Stacktrace ab:
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)
Ich habe auch auf das Google Play Services-Projekt verwiesen. Was mache ich hier falsch?
AKTUALISIEREN
Der entsprechende Fehler im Google Issue Tracker ( https://issuetracker.google.com/issues/35822258 ) wurde vor einiger Zeit behoben.
Jetzt können Sie die Google Maps Android API im Emulator verwenden und virtuelle Geräte mit Play-Diensten erstellen, wie in dieser Antwort beschrieben:
android
google-maps
android-mapview
google-maps-android-api-2
soren.qvist
quelle
quelle
Antworten:
Laut einer Diskussion mit Android-Entwicklern auf Google+ ist das Ausführen der neuen Map-API auf dem Emulator derzeit nicht möglich.
(Der Kommentar stammt von Zhelyazko Atanasov gestern um 23:18 Uhr. Ich weiß nicht, wie ich direkt darauf verlinken soll.)
Außerdem wird der Teil " (über Basar) " nicht angezeigt, wenn Sie von einem tatsächlichen Gerät aus ausgeführt werden, und die Schaltfläche "Aktualisieren" öffnet den Play Store. Ich gehe davon aus, dass Bazaar Google Play Services auf dem Android-Emulator bereitstellen soll, aber es ist noch nicht fertig ...
quelle
AKTUALISIEREN
Die Google Maps API v2 ist jetzt auf den neuesten Google-Systemabbildern installiert (API: 19 ARM oder x86).
Ihre Anwendung sollte also nur mit den neuen Bildern funktionieren. Diese Dateien müssen nicht installiert werden.
Ich habe versucht, eine Android Google Maps V2-Anwendung unter einem Emulator auszuführen. Nachdem Google Play Services endlich ausgeführt wurde, habe ich mein SDK auf Google Play Services Version 4 aktualisiert, und mein Emulator hat meine Anwendung nicht mehr ausgeführt.
Ich habe jetzt herausgefunden, wie ich meinen Emulator von meinem Transformator-Tablet aus aktualisieren kann. (Sie benötigen kein Tablet, da Sie die folgenden Dateien herunterladen können.)
Ich habe Titanium Backup verwendet, um mein Asus Eee Pad Transformer (TF101) zu sichern, und dann die APK- Dateien com.android.vending und com.google.android.gms aus dem Backup abgerufen .
Ich habe diese auf einem Emulator installiert, der mit Plattform konfiguriert ist: 4.1.2, API-Level: 16, CPU Intel / Atom x86) und meine Google Maps V2-Anwendung funktioniert wieder.
Das war alles. Keiner der anderen Schritte in Bezug auf / system / app war erforderlich.
Meine Anwendung verwendet nur die Google Maps-API. Zweifellos sind weitere Schritte erforderlich, wenn Sie andere Google Play-Dienste verwenden.
Neue Dateien für die neuesten Google Play-Dienste:
com.google.android.gms-20140218.apk
com.android.vending-20140218.apk
Gleiche Anweisungen wie zuvor: Erstellen Sie einen neuen Emulator mit einer CPU / ABI , einem Nicht-Google-API-Ziel (Versionen 10-19 funktionieren) und einer GPU- Emulation, die ein- oder ausgeschaltet ist, und installieren Sie dann die Dateien:
Wenn Sie einen vorhandenen Emulator aktualisieren, müssen Sie möglicherweise frühere Versionen deinstallieren, indem Sie:
Das ist alles.
quelle
adb uninstall com.android.vending
und deinstallierenadb uninstall com.google.android.gms
. Nach der Installation der oben genannten Pakete wird meine Anwendung ausgeführt, aberEGL_emulation: eglSurfaceAttrib not implemented
im Protokoll werden Warnmeldungen angezeigt, und in der Anwendung ist keine Zuordnung sichtbar. Dies ist meines Erachtens ein Emulator- / GPU-Problem. Meine GPU istRadeon HD6870
und ich habe Android 4.1.2 ohne Google APIs auf dem Emulator ausgeführt.Ich habe ungefähr einen Tag damit verbracht, die neue gmaps- API (Google Maps Android API v2) auf dem Android-Emulator zu konfigurieren . Keine der Methoden, die ich im Internet gefunden habe, funktionierte für mich richtig. Aber ich habe es trotzdem getan. Hier ist, wie:
Bei den anderen Versionen konnte ich aufgrund verschiedener Fehler bei der Installation der erforderlichen Anwendungen nicht konfigurieren.
2) Starten Sie den Emulator und installieren Sie die folgenden Anwendungen:
Sie können dies mit folgenden Befehlen tun:
2.1)
adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2.2)
adb shell chmod 777 /system/app
2.3-2.5)
adb push Each_of_the_3_apk_files.apk /system/app/
Links zum Herunterladen von APK-Dateien . Ich habe sie von meinem gerooteten Android-Gerät kopiert.
3) Installieren Sie Google Play Services und Google Maps auf dem Emulator. Ich habe einen Fehler 491, wenn ich sie aus dem Google Play Store installiere . Ich habe die Apps in den Emulator hochgeladen und die Installation lokal ausgeführt. (Sie können
adb
dies installieren). Links zu den Apps:4) Nach diesen Schritten habe ich erfolgreich ein Demo-Beispiel auf dem Emulator ausgeführt. Hier ist ein Screenshot:
quelle
adb install com.google.android.apps.maps-1.apk
undadb install com.google.android.gms-2.apk
.Ich beantworte diese Frage zum zweiten Mal, weil die Lösung, die ich ausprobiert habe und die zuerst nicht funktioniert hat, jetzt funktioniert und ich die Schritte neu erstellen kann, damit sie funktioniert :)
Ich hatte auch das Gefühl, dass das Fehlen des Google Play Store hier ein Schuldiger ist. Deshalb habe ich versucht, den Google Play Store durch Ratschläge zu diesem Link und diesem Link zusammen auf dem Emulator zu installieren . Ich hatte einige Schwierigkeiten, aber am Ende ist es mir gelungen, den Google Play Store zu installieren und ihn durch Herunterladen einer zufälligen App zu testen. Bei der Kartenaktivität wurde die Nachricht jedoch weiterhin mit der Schaltfläche "Aktualisieren" angezeigt. Dieser Knopf würde mich zum Laden bringen, aber dort würde ich eine Nachricht über "Artikel nicht gefunden" erhalten und Karten funktionierten immer noch nicht. An diesem Punkt gab ich auf.
Gestern habe ich versehentlich die gleiche Test-App gestartet und es hat funktioniert! Ich war sehr verwirrt, aber schnell habe ich einen Unterschied zu dem Emulator gemacht, in dem er funktioniert, und einen neuen sauberen, und ich habe zwei Apps für den funktionierenden im Verzeichnis / data / app / ermittelt: com.android.vending-1. apk und com.google.android.gms-1.apk. Dies ist seltsam, da ich bei der Installation von Google Play Store anhand der Anweisungen dieser Websites Phonesky.apk, GoogleServicesFramework.apk und GoogleLoginService.apk in einen anderen Ordner / System / App verschoben habe.
Wie auch immer, jetzt funktioniert die Android Google Maps API v2 auf meinem Emulator. Dies sind die Schritte, um dies zu tun:
Erstellen Sie einen neuen Emulator
Dies sind die Einstellungen, die für mich funktionieren. Ich weiß es nicht für andere.
Starten Sie den Emulator
Installieren Sie com.android.vending-1.apk und com.google.android.gms-1.apk über den ADB-Installationsbefehl
Google Maps sollte jetzt in Ihrem Emulator funktionieren.
quelle
Ich habe eine (deutsche) Beschreibung erstellt, wie es funktioniert . Grundsätzlich benötigen Sie einen Emulator mit mindestens API-Level 9 und keinen Google-APIs. Dann werden Sie die APK - Dateien von einem bekommen müssen verwurzelt Gerät:
und installieren Sie sie im Emulator:
Sie können sogar die native Google Maps-App ausführen, wenn Sie einen Emulator mit mindestens API-Stufe 14 haben und zusätzlich installieren
com.google.android.apps.maps-1.apk
Habe Spaß.
quelle
Ich habe versucht, ein Android Google Maps v2 unter einem Emulator auszuführen, und ich habe viele Möglichkeiten gefunden, dies zu tun, aber keine davon hat für mich funktioniert. Ich habe immer diese Warnung im Logcat
Google Play services out of date. Requires 3025100 but found 2010110
und wenn ich Google Play-Dienste auf dem Emulator aktualisieren möchte, ist nichts passiert. Das Problem war, dass das com.google.android.gms APK nicht mit der Version der Bibliothek in meinem Android SDK kompatibel war.Ich habe diese Dateien "com.google.android.gms.apk", "com.android.vending.apk" auf meinem Emulator installiert und meine App Google Maps v2 hat einwandfrei funktioniert. Keiner der anderen Schritte in Bezug auf / system / app war erforderlich.
quelle
Diese App wird erst ausgeführt, wenn Sie Google Play Services aktualisieren. Ich habe es so lange versucht, aber ich habe die Karte immer noch nicht erhalten ... Es wird nur ein leerer Bildschirm angezeigt, auch wenn ich meinen Google Play-Dienst durch den folgenden Kommentar geändert habe.
Überprüfen Sie die Manifestdatei Ihrer Wiedergabedienste und den Versionscode für die APK-Datei com.google.android.gms. Im Folgenden ist es "3136110". Laden Sie diese APK-Dateien herunter und installieren Sie sie über eine DOS-Eingabeaufforderung. Führen Sie jedoch vor der Installation Ihren Zielemulator aus.
Ich habe diese APK-Dateien von diesem Link erhalten .
quelle
Ich habe dieses Problem mit den folgenden Schritten gelöst:
Im Emulator:
Sie müssen die neueste API verwenden
Google APIs(Google Inc.)-API Level 19
.Machen Sie den Rest der Dinge, die im Screenshot selbst platziert sind.
API-Schlüssel:
Erstellen Sie einen neuen API-Schlüssel und überprüfen Sie sorgfältig den Google Map-API-Schlüssel und den SHA-Schlüssel.
Google Play Services:
Sie müssen die neuesten Google Play Services com.android.vending-4.8.20.apk herunterladen . Wenn dieser Website nicht funktionieren, können Sie im Internet viele Websites mit dem Namen finden
com.android.vending 4.8.20.apk
.Sie können die Google Play-Dienste mithilfe der Eingabeaufforderung ausführen
adb install com.android.vending 4.8.20.apk
.Hinweis: Sie müssen die neuesten Google Play-Dienste herunterladen, da die neueste Version von Jahr zu Jahr im Internet aktualisiert wird.
Ausgabe :
quelle
Nach dem Update auf ADT 22.0.1 gab der Google Maps-Dienst aufgrund privater Android-Bibliotheken einen Fehler aus und die App stürzte ab. Also habe ich endlich die Lösung gefunden und es hat bei mir funktioniert.
Installieren Sie einfach die Google Play-Dienstbibliothek und gehen Sie zu
google-play-service/libproject/google-play-services_lib
vonhttps://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b
. Importieren Sie das in Ihren Arbeitsbereich. Bereinigen Sie Ihr Projekt dort, wo Sie gogole-play-services-lib verwenden möchten, und erstellen Sie es erneut. Gehen Sie zu Projekt -> Eigenschaften -> Java BuildPath -> wählen Sie "Private Android-Bibliotheken, Android-Abhängigkeiten, Google-Play-Service".Gehen Sie in den Eigenschaften selbst zu Android und wählen Sie eine der Versionen aus. Wählen Sie dann Hinzufügen und wählen Sie google-play-service-lib aus. Drücken Sie dann auf Anwenden und schließlich auf OK.
Gehen Sie zum Schluss zu Projekt -> Android Tools -> Android Support Libraries. Akzeptieren Sie die Lizenz und führen Sie nach der Installation Ihr Projekt aus.
Es wird gut funktionieren.
quelle
Ich habe eine nette Lösung gefunden, mit der Sie Ihre App im Emulator testen können und bei der Sie nicht auf die ältere Version der Bibliothek zurückgreifen müssen. Siehe Antwort auf Stack - Überlauf Frage Laufen Google Maps v2 im Android Emulator .
quelle
Installieren Sie im Android SDK Manager: Extras: Google Play-Dienste
quelle
Das funktioniert bei mir. Die aktuelle Version ist 10.0.1
quelle