Je teste la nouvelle API Google Maps V2 pour Android, et je reçois ce message au lancement de l'application:
Cela fonctionne sur un émulateur 4.1.
Voici mon AndroidManifest.xml
dossier:
<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>
Fichier 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;
}
}
Fichier 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>
Cliquez sur "Mettre à jour" pour bloquer l'application avec le stacktrace suivant:
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)
J'ai également fait référence au projet Google Play Services. Qu'est-ce que je fais de mal ici?
METTRE À JOUR
Le bogue correspondant dans le suivi des problèmes de Google ( https://issuetracker.google.com/issues/35822258 ) a été résolu il y a quelque temps.
Vous pouvez maintenant utiliser l'API Google Maps Android dans l'émulateur et créer des appareils virtuels avec les services Play comme décrit dans cette réponse:
Réponses:
Selon une discussion avec les développeurs Android sur Google+, exécuter la nouvelle API Map sur l'émulateur n'est pas possible pour le moment.
(Le commentaire vient de Zhelyazko Atanasov hier à 23h18, je ne sais pas comment y établir un lien directement)
De plus, vous ne voyez pas la partie " (via Bazaar) " lors de l'exécution à partir d'un appareil réel, et le bouton de mise à jour ouvre le Play Store. Je suppose que Bazaar est censé fournir des services Google Play sur l'émulateur Android, mais il n'est pas encore prêt ...
la source
METTRE À JOUR
L'API Google maps v2 est désormais installée sur les dernières images système de Google (api: 19 ARM ou x86).
Votre application devrait donc fonctionner uniquement avec les nouvelles images. Il n'est pas nécessaire d'installer ces fichiers.
J'ai essayé d'exécuter une application Android Google Maps V2 sous un émulateur et une fois que j'ai enfin lancé les services Google Play, j'ai mis à jour mon SDK vers la révision 4 des services Google Play et mon émulateur ne voulait plus exécuter mon application.
J'ai maintenant travaillé sur la façon de mettre à jour mon émulateur à partir de ma tablette de transformation. (Vous n'aurez pas besoin d'une tablette car vous pouvez télécharger les fichiers ci-dessous.)
J'ai utilisé Titanium Backup pour sauvegarder mon Asus Eee Pad Transformer (TF101), puis j'ai récupéré les fichiers APK com.android.vending et com.google.android.gms à partir de la sauvegarde.
Je les ai installés sur un émulateur configuré avec la plate-forme: 4.1.2, niveau API: 16, CPU Intel / Atom x86) et mon application Google Maps V2 fonctionne à nouveau.
C'était tout ... aucune des autres étapes concernant / system / app n'était requise.
Mon application utilise uniquement l'API Google Maps, sans aucun doute, des étapes supplémentaires sont nécessaires si vous utilisez d'autres services Google Play.
Nouveaux fichiers pour les derniers services Google Play:
com.google.android.gms-20140218.apk
com.android.vending-20140218.apk
Mêmes instructions que précédemment: créez un nouvel émulateur avec n'importe quel CPU / ABI , une cible API non Google (les versions 10 à 19 fonctionnent) et un GPU émulation activée ou désactivée, puis installez les fichiers:
Si vous mettez à niveau un émulateur existant, vous devrez peut-être désinstaller les versions précédentes en:
C'est tout.
la source
adb uninstall com.android.vending
etadb uninstall com.google.android.gms
. Après avoir installé les packages mentionnés ci-dessus, mon application s'exécute mais je voisEGL_emulation: eglSurfaceAttrib not implemented
des messages d'avertissement dans le journal et aucune carte n'est visible dans l'application. C'est, je crois, un problème d'émulateur / GPU. Mon GPU estRadeon HD6870
et j'utilisais Android 4.1.2 sans API Google sur l'émulateur.J'ai passé environ une journée à configurer la nouvelle API gmaps (Google Maps Android API v2) sur l'émulateur Android. Aucune des méthodes que j'ai trouvées sur Internet ne fonctionnait correctement pour moi. Mais je l'ai quand même fait. Voici comment:
Sur les autres versions, je n'ai pas pu configurer à cause de diverses erreurs lorsque j'ai installé les applications nécessaires.
2) Démarrez l'émulateur et installez les applications suivantes:
Vous pouvez le faire avec les commandes suivantes:
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/
Liens pour télécharger des fichiers APK . Je les ai copiés depuis mon appareil Android rooté.
3) Installez les services Google Play et Google Maps sur l'émulateur. J'ai une erreur 491, si je les installe depuis Google Play Store. J'ai téléchargé les applications sur l'émulateur et exécuté l'installation localement. (Vous pouvez utiliser
adb
pour installer ceci). Liens vers les applications:4) J'ai exécuté avec succès un exemple de démonstration sur l'émulateur après ces étapes. Voici une capture d'écran:
la source
adb install com.google.android.apps.maps-1.apk
etadb install com.google.android.gms-2.apk
.Je réponds à cette question pour la deuxième fois, car la solution que j'ai essayée et qui ne fonctionnait pas au début fonctionne maintenant, et je peux recréer les étapes pour la faire fonctionner :)
J'ai également eu le sentiment que l'absence de Google Play Store est un coupable ici, j'ai donc essayé d'installer Google Play Store sur l'émulateur en suivant des conseils sur ce lien et ce lien combiné. J'ai eu quelques difficultés, mais à la fin, j'ai réussi à installer Google Play Store et à le tester en téléchargeant une application aléatoire. Mais l'activité des cartes a continué d'afficher le message avec le bouton "Mettre à jour". Ce bouton m'emmènerait au magasin, mais là, j'obtiendrais un message sur "élément non trouvé" et les cartes ne fonctionnaient toujours pas. À ce moment-là, j'ai abandonné.
Hier, j'ai lancé la même application de test par accident et cela a fonctionné! J'étais très confus, mais j'ai rapidement fait une différence avec l'émulateur où il fonctionne et un nouveau propre et j'ai déterminé deux applications sur celle qui fonctionne dans le répertoire / data / app /: com.android.vending-1. apk et com.google.android.gms-1.apk. C'est étrange car, lorsque j'installais Google Play Store selon les instructions de ces sites, je poussais Phonesky.apk, GoogleServicesFramework.apk et GoogleLoginService.apk et vers un autre dossier / système / application.
Quoi qu'il en soit, maintenant l'API Google Maps v2 Android fonctionne sur mon émulateur. Voici les étapes pour ce faire:
Créer un nouvel émulateur
Ce sont les paramètres qui fonctionnent pour moi. Je ne sais pas pour les différents.
Démarrez l'émulateur
installez com.android.vending-1.apk et com.google.android.gms-1.apk via la commande d'installation ADB
Google Maps devrait maintenant fonctionner dans votre émulateur.
la source
J'ai créé une description (en allemand) comment le faire fonctionner . Vous avez essentiellement besoin d'un émulateur avec au moins le niveau d'API 9 et sans API Google. Ensuite, vous devrez obtenir les APK à partir d'un appareil enraciné :
et installez-les dans l'émulateur:
Vous pouvez même exécuter l'application native Google Maps, si vous avez un émulateur avec au moins le niveau d'API 14 et installez en plus
com.google.android.apps.maps-1.apk
S'amuser.
la source
J'ai essayé d'exécuter un Android Google Maps v2 sous un émulateur, et j'ai trouvé de nombreuses façons de le faire, mais aucune n'a fonctionné pour moi. J'ai toujours cet avertissement dans le Logcat
Google Play services out of date. Requires 3025100 but found 2010110
et lorsque je veux mettre à jour les services Google Play sur l'émulateur, rien ne se passe. Le problème était que l' APK com.google.android.gms n'était pas compatible avec la version de la bibliothèque dans mon SDK Android.J'ai installé ces fichiers "com.google.android.gms.apk", "com.android.vending.apk" sur mon émulateur et mon application Google Maps v2 fonctionnait bien. Aucune des autres étapes concernant / system / app n'était requise.
la source
Cette application ne fonctionnera que si vous mettez à jour les services Google Play. Je l'ai essayé pendant si longtemps, mais je n'ai toujours pas eu la carte ... Seul un écran vide apparaît, même si j'ai modifié mon service Google Play indiqué par le commentaire ci-dessous.
Vérifiez le fichier manifeste de vos services de lecture et vérifiez le code de version du fichier APK com.google.android.gms. Dans la partie ci-dessous, il s'agit de "3136110". Téléchargez ces fichiers APK et installez-les à partir d'une invite DOS, mais avant l'installation, exécutez votre émulateur cible.
J'ai obtenu ces fichiers APK à partir de ce lien .
la source
J'ai résolu ces problèmes en procédant comme suit:
Dans l'émulateur:
Vous devez utiliser la dernière API
Google APIs(Google Inc.)-API Level 19
.Faites le reste des choses placées dans la capture d'écran elle-même.
Clé API:
Créez une nouvelle clé API et vérifiez attentivement la clé API Google Map et la clé SHA.
Services Google Play:
Vous devez télécharger les derniers services Google Play com.android.vending-4.8.20.apk . Dans ce site, si les services Google Play ne fonctionnaient pas, vous pouvez trouver de nombreux sites sur Internet nommés
com.android.vending 4.8.20.apk
.vous pouvez exécuter les services Google play à l'aide de l'invite de commande
adb install com.android.vending 4.8.20.apk
.Remarque: vous devez télécharger les derniers services Google Play, car la dernière version d'année en année sera mise à jour sur Internet.
sortie :
la source
Après la mise à jour vers ADT 22.0.1, en raison des bibliothèques privées Android, le service Google Maps donnait une erreur et l'application s'est plantée. J'ai donc finalement trouvé la solution et cela a fonctionné pour moi.
Installez simplement la bibliothèque de services Google Play, puis accédez à
google-play-service/libproject/google-play-services_lib
dehttps://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b
. Importez-le dans votre espace de travail. Nettoyez votre projet dans lequel vous souhaitez utiliser gogole-play-services-lib, puis reconstruisez-le et accédez au projet -> Propriétés -> Java BuildPath -> sélectionnez "Bibliothèques privées Android, dépendances Android, service google-play"Dans Propriétés, accédez à Android, puis choisissez l'une des versions, puis choisissez ajouter et sélectionnez google-play-service-lib, puis appuyez sur appliquer et enfin sur OK.
Enfin, allez dans le projet -> Outils Android -> Bibliothèques de support Android. Acceptez la licence et après l'installation, exécutez votre projet.
Cela fonctionnera très bien.
la source
J'ai trouvé une bonne solution qui vous permet de tester votre application dans l'émulateur et qui ne vous oblige pas non plus à revenir à l'ancienne version de la bibliothèque. Voir une réponse à la question de Stack Overflow Exécution de Google Maps v2 sur l'émulateur Android .
la source
Depuis Android SDK Manager, installez: Extras: services Google Play
la source
cela fonctionne pour moi la version actuelle est 10.0.1
la source