web-dev-qa-db-fra.com

Cette application ne s'exécutera que si vous mettez à jour les services Google Play (via Bazaar).

Je teste la nouvelle API Google Maps V2 pour Android et je reçois le message suivant lors du lancement de l'application:

MainActivity showing error message

Ceci fonctionne sur un émulateur 4.1.

Voici mon fichier AndroidManifest.xml:

<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>

En cliquant sur "Mettre à jour", l'application se bloque 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 référencé le projet de services Google Play. Qu'est-ce que je fais mal ici?

UPDATE

Le bogue correspondant dans le suivi des problèmes de Google ( https://issuetracker.google.com/issues/35822258 ) avait été résolu il y a quelque temps.

Vous pouvez maintenant utiliser l'API Google Maps Android dans l'émulateur et créer des périphériques virtuels avec des services de lecture comme décrit dans cette réponse:

https://stackoverflow.com/a/46246782/5140781

99
soren.qvist

Selon ne discussion avec développeurs Android sur Google+, l'exécution de la nouvelle API de carte sur l'émulateur n'est pas possible pour le moment.

(Le commentaire est de Zhelyazko Atanasov hier à 23h18, je ne sais pas comment faire un lien direct vers celui-ci)

En outre, vous ne voyez pas la partie " (via Bazaar) " lors de l'exécution à partir d'un périphérique 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 ...

42
nicopico

UPDATE

L'API Google Maps v2 est désormais installé 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 Android application Google Maps V2 sous un émulateur. Une fois les services Google Play activés, j'ai mis à jour mon SDK avec la révision 4 des services Google Play et mon émulateur ne fonctionnait plus. mon application plus.

J'ai maintenant trouvé comment 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 mes Asus Eee Pad Transformer (TF101), puis j'ai récupéré les fichiers com.Android.vending et com.google.Android.gms APK de la sauvegarde.

J'ai installé ceux-ci sur un émulateur configuré avec la plate-forme: 4.1.2, API Niveau: 16, CPU Intel/Atom x86) et mon application Google Maps V2 fonctionne à nouveau.

C’était tout. Aucune des autres étapes concernant/système/application n’était requise.

Mon application utilise uniquement l'API Google Maps. Il ne fait aucun doute que d'autres étapes sont nécessaires si vous utilisez d'autres services Google Play.

Nouveaux fichiers pour les derniers services Google Play:

Mêmes instructions que précédemment: Créez un nouvel émulateur avec n'importe quel CPU / ABI , cible non-Google API (les versions 10-19 fonctionnent) et GPU émulation activée ou désactivée, puis installez les fichiers:

adb install com.Android.vending-20140218.apk
adb install com.google.Android.gms-20140218.apk

Si vous mettez à niveau un émulateur existant, vous devrez peut-être désinstaller les versions précédentes en:

adb uninstall com.Android.vending
adb uninstall com.google.Android.gms

C'est tout.

55
Dan Brough

J'ai passé environ une journée à configurer les nouvelles cartes virtuelles API (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:

  1. Créez un nouvel émulateur avec la configuration suivante:

Enter image description here

Sur les autres versions, je n’ai pas pu configurer en raison de diverses erreurs lors de l’installation des applications nécessaires.

2) Démarrez l’émulateur et installez les applications suivantes:

  • GoogleLoginService.apk
  • GoogleServicesFramework.apk
  • Phonesky.apk

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 vers télécharger les fichiers APK . Je les ai copiées à partir de mon périphérique Android enraciné.

3) Installez les services Google Play et Google Maps sur l'émulateur. J'ai une erreur 491, si je les installe à partir du magasin Google Play . J'ai téléchargé les applications sur l'émulateur et exécuté l'installation localement. (Vous pouvez utiliser adb pour l'installer). Liens vers les applications:

4) J'ai réussi à exécuter un exemple de démonstration sur l'émulateur après ces étapes. Voici une capture d'écran:

Google Maps

39
Paha

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 que cela fonctionne :)

J'avais aussi le sentiment que le manque de Google Play Store est un coupable ici. J'ai donc essayé d'installer Google Play Store sur l'émulateur en donnant 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 continuait d'afficher le message avec le bouton "Mettre à jour". Ce bouton m'emmènerait au magasin, mais j'y recevrais un message concernant "élément introuvable" et les cartes ne fonctionnaient toujours pas. À ce point 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 créé un diff depuis l'émulateur, qui fonctionne ainsi que le nouveau, et j'ai déterminé deux applications sur celle qui fonctionne dans/data/app/directory: com.Android.vending-1. apk et com.google.Android.gms-1.apk. C'est étrange car, lorsque j'installais Google Play Store à l'aide des instructions de ces sites, je poussais Phonesky.apk, GoogleServicesFramework.apk et GoogleLoginService.apk vers un autre dossier/système/application.

Quoi qu'il en soit, désormais Android API Google Maps v2 fonctionne sur mon émulateur. Voici les étapes à suivre:


Créer un nouvel émulateur

  • Pour périphérique , choisissez "5.1 '' WVGA (480 x 800: mdpi)"
  • Pour cible , choisissez "Android 4.1.2 - API de niveau 16".
  • Pour "CPU/ABI", choisissez "ARM"
  • Laissez le reste aux valeurs par défaut

Ce sont les paramètres qui fonctionnent pour moi. Je ne sais pas pour les différents.


Démarrer l'émulateur


installer com.Android.vending-1.apk et com.google.Android.gms-1.apk via la commande d'installation ADB


Google Maps devrait fonctionner maintenant dans votre émulateur.

29
Nemanja Kovacevic

J'ai créé une description (en allemand) comment le faire fonctionner . Vous avez essentiellement besoin d'un émulateur avec au moins le niveau 9 de l'API et aucun API Google. Ensuite, vous devrez obtenir les fichiers APK d'un appareil enraciné :

adb -d pull /data/app/com.Android.vending-2.apk
adb -d pull /data/app/com.google.Android.gms-2.apk

et installez-les dans l'émulateur:

adb -e install com.Android.vending-2.apk
adb -e install com.google.Android.gms-2.apk

Vous pouvez même exécuter l'application Google Maps native, si vous disposez d'un émulateur d'au moins 14 API et installer com.google.Android.apps.maps-1.apk

S'amuser.

3
Kurt Huwig

Cette application ne fonctionnera que si vous mettez à jour les services Google Play. Je l'ai essayée pendant très longtemps, mais je n'ai toujours pas reçu la carte ... Seul un écran vide apparaît, même si j'ai modifié mon service Google Play à l'aide du 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. En bas, c'est "3136110". Téléchargez ces fichiers APK et installez-les à partir d'une invite DOS, mais avant l'installation, exécutez votre émulateur cible.

package="com.google.Android.gms"
Android:versionCode="3136110"
Android:versionName="3.1.36 (673201-10)

J'ai obtenu ces fichiers APK de ce lien .

2
user

J'essayais de lancer un Android Google Maps v2 sous un émulateur. J'ai trouvé plusieurs façons de le faire, mais aucune d'entre elles ne fonctionnait pour moi. J'ai toujours cet avertissement dans le Logcat Google Play services out of date. Requires 3025100 but found 2010110 et lorsque je souhaite mettre à jour les services Google Play sur l'émulateur, rien ne se passe. Le problème était que le fichier com.google.Android.gms APK n'était pas compatible avec la version de la bibliothèque de 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 a bien fonctionné. Aucune des autres étapes concernant/système/application n'était requise.

2
Adil

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.

    enter image description here

  • Clé API:

    Créez une nouvelle clé d'API et vérifiez attentivement la clé de l'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 . Sur ce site, si les services Google Play ne fonctionnaient pas, vous pourrez trouver de nombreux sites sur Internet nommés com.Android.vending 4.8.20.apk.

    vous pouvez exécuter les services Google Play en utilisant l'invite de commande adb install com.Android.vending 4.8.20.apk.

    Remarque: Vous devez télécharger les derniers services de Google Play, car la version la plus récente est mise à jour sur Internet.

    sortie :

    enter image description here

2
Stephen
 just change it to 

compile 'com.google.Android.gms:play-services-maps:9.6.0'
compile 'com.google.Android.gms:play-services-location:9.6.0'

cela fonctionne pour moi la version actuelle est 10.0.1

0
jagapathi

J'ai trouvé une solution intéressante qui vous permet de tester votre application dans l'émulateur et ne vous oblige également pas à revenir à l'ancienne version de la bibliothèque. Voir réponse à la question relative au débordement de la pile ). Exécution de Google Maps v2 sur l’émulateur Android .

0
Nuntipat Narkthong

Depuis Android SDK Manager, installez: Extras: Services Google Play

0
Franck

Après la mise à jour vers ADT 22.0.1, en raison de Android bibliothèques privées, le service Google Maps générait une erreur et l'application se bloquait. 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 à partir de https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Importez cela dans votre espace de travail. Nettoyez votre projet où vous voulez utiliser gogole-play-services-lib, puis reconstruisez-le et accédez à Projet -> Propriétés -> Java BuildPath -> sélectionnez "Bibliothèques privées Android, Android Dépendances, google-play-service"

Dans Propriétés, accédez à Android, choisissez l'une des versions, choisissez ensuite ajouter, sélectionnez google-play-service-lib, puis cliquez sur appliquer et enfin sur OK.

Enfin, accédez au projet -> Android Outils -> Android Bibliothèques de support. Acceptez la licence et, après l’installation, lancez votre projet.

Cela fonctionnera bien.

0
Honey Shah