100 votes

Cette application ne fonctionnera pas à moins que vous la mise à jour de Google Play Services (via le Bazar)

Je vais tester la nouvelle version de Google Maps API V2 pour Android, et je reçois ce message lorsque l'application est lancée:

MainActivity showing error message

C'est en cours d'exécution sur un 4.1 émulateur.

Voici mon AndroidManifest.xml le fichier:

<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 "mise à Jour" qui bloque l'application avec le suivant stacktrace:

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 aussi mentionné le Google Play Services du projet. Ce que je fais mal?

56voto

danbrough Points 866

Mise à JOUR

La Google maps API v2 est maintenant installé sur le dernier système de Google images (api:19 ARM ou x86).
Ainsi, votre application devrait fonctionner avec de nouvelles images. Il n'est pas nécessaire d'installer ces fichiers.

J'ai essayé d'exécuter un Android Google Maps V2 de l'application en vertu d'un émulateur et une fois que j'ai enfin eu le Google Play Services en cours d'exécution, j'ai mis à jour mon SDK de Google Play Services, révision 4, et mon émulateur ne pas s'exécuter mon application.

J'ai maintenant travaillé sur la façon de mettre à jour mon émulateur de mon transformateur tablette. (Vous n'aurez pas besoin d'une tablette comme vous pouvez le télécharger les fichiers ci-dessous.)

J'ai utilisé Titanium Backup pour la sauvegarde de mon Asus Eee Pad transformer (TF101), puis saisit le com.android.de vente et de la com.google.android.gms APK fichiers de la sauvegarde.

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

C'était tout .. aucun des autres mesures à l'égard de /system/app ont été nécessaires.

Ma seule application utilise l'API Google Maps, sans aucun doute, plusieurs étapes sont nécessaires si vous utilisez d'autres de Google Play services.

De nouveaux fichiers pour la dernière version de Google Play services:

Mêmes instructions que précédemment: Créer un nouvel émulateur avec n'importe quel CPU/ABI, un non-API Google cible (versions 10 à 19 ans de travail) et GPU désactiver l'émulation, et ensuite installer les fichiers:

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

Si vous êtes à la mise à niveau d'un émulateur, vous pourriez avoir besoin de désinstaller les versions précédentes par:

adb uninstall com.android.vending
adb uninstall com.google.android.gms

C'est tout.

42voto

nicopico Points 1771

Selon une discussion avec les Développeurs Android sur Google+, l'exécution de la nouvelle Carte de l'API sur l'émulateur n'est pas possible pour le moment.

(Le commentaire est de Zhelyazko Atanasov hier à 23:18, je ne sais pas comment faire un lien directement)

Aussi, vous ne voyez pas le "(via Bazar)" de la partie lors de l'exécution à partir d'un périphérique réel, et le bouton mise à jour, ouvrez le Play Store. Je suis en supposant que le Bazar est destiné à fournir des Google Play Services sur l'émulateur Android, mais il n'est pas encore prêt...

39voto

paha Points 456

J'ai passé la journée à configurer la nouvelle gmaps API (Google Maps API Android v2) sur l'émulateur Android. Aucune des méthodes de ceux que j'ai trouvé sur l'Internet a été fonctionne correctement pour moi. Mais encore, je l'ai fait. Voici comment:

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

Enter image description here

Sur les autres versions je ne pouvais pas le configurer, en raison de diverses erreurs quand j'ai installé les applications nécessaires.

2) Démarrer l'émulateur et installer 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/

Des liens pour télécharger des fichiers APK. Je l'ai copié de mon enracinée appareil Android.

3) Installer Google Play et Google Maps sur l'émulateur. J'ai une erreur 491, si je les installer à partir de Google Play store. J'ai téléchargé les applications sur l'émulateur et lancez l'installation en local. (Vous pouvez utiliser adb pour installer ce). Des liens vers les applications:

4) j'ai réussi à faire fonctionner une démo de l'échantillon sur l'émulateur après ces étapes. Voici une capture d'écran:

Google Maps

29voto

Je vais répondre à cette question pour la deuxième fois, parce que la solution que j'ai essayé et qui ne travaillent pas au premier fonctionne maintenant, et je peux recréer les étapes pour le faire fonctionner :)

J'ai aussi eu le sentiment que l'absence de Google Play Store est un coupable ici, j'ai donc essayé d'installer le Google Play Store pour l'émulateur par des conseils sur ce lien et ce lien combiné. J'ai eu quelques difficultés, mais à la fin j'ai réussi à installer le Google Play Store et testé par le téléchargement de certains aléatoire app. Mais les cartes de l'activité de gardés en affichant le message avec le bouton "Update". Ce bouton va me prendre pour le magasin, mais là je reçois un message "élément introuvable" et des cartes ne fonctionne toujours pas. Au point que j'ai renoncé.

Hier, j'ai tiré la même application de test par accident et cela a fonctionné! J'étais très confus, mais très vite, j'ai fait un diff à partir de l'émulateur où il du travail et de nouvelles nettoyer un et j'ai trouvé deux applications sur le travail dans /data/app/ répertoire: com.android.vending-1.apk et com.google.android.gms-1.apk. C'est étrange, car, quand j'ai de l'installation de Google Play Store par les directives de ces sites, je poussais Phonesky.apk, GoogleServicesFramework.apk et GoogleLoginService.apk et à un autre dossier /system/app.

De toute façon, maintenant l'Android de Google Maps API v2 est de travailler sur mon émulateur. Ce sont les étapes à suivre:


Créer un nouvel émulateur

  • Pour l' appareil, choisissez "5.1" WVGA (480 x 800: mdpi)"
  • Pour la cible, choisissez "Android 4.1.2 - API level 16"
  • Pour "CPU/ABI", choisissez "BRAS"
  • Laisser le reste par défaut

Ce sont les paramètres qui travaillent pour moi. Je ne sais pas pour les autres.


Démarrer l'émulateur


installer com.android.vending-1.apk et com.google.android.gms-1.apk via ADB install


Google Maps devrait maintenant fonctionner dans votre émulateur.

3voto

Kurt Huwig Points 86

J'ai créé un (allemand) description de la manière d'obtenir ce travail. En gros, vous avez besoin d'un émulateur avec au moins API de niveau 9 et pas de Google Api. Ensuite, vous aurez à obtenir l'Apk depuis un enracinée appareil:

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

et de les installer 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 le natif de l'Application Google Maps, si vous avez un émulateur avec au moins API de niveau 14 et installer en plus un com.google.android.apps.maps-1.apk

Avoir du plaisir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X