L'API Android Maps requiert openGL es 2

La documentation de Maps v2 indique:

Étant donné que la version 2 de l'API Android de Google Maps requiert OpenGL ES version 2, vous devez ajouter un élément <uses-feature> comme enfant de l'élément manifest dans AndroidManifest.xml:

  • Android install apk avec Intent.VIEW_ACTION ne fonctionne pas avec le fournisseur de fichiers
  • Comment mettre à jour le widget d'application avec la vue de liste d'une activité
  • Traitement vidéo en Android
  • Android ColorFilter - Mode Porter-Duff
  • Quelle est la différence entre les bibliothèques privées Android, les dépendances et le dossier libs?
  • Aucune implémentation n'a été trouvée pour les autochtones
  •  <uses-feature android:glEsVersion="0x00020000" android:required="true"/>` 

    Ceci notifie les services externes de l'exigence. En particulier, cela a pour effet d'empêcher Google Play Store d'afficher votre application sur des périphériques qui ne prennent pas en charge OpenGL ES version 2.

    En fait, il lance une exception si ce n'est pas dans le manifeste. Je ne veux pas filtrer mon application dans le magasin, je prévois de continuer à utiliser les anciennes cartes pour les anciens périphériques, et je ne présente que les nouvelles cartes si les fonctionnalités requises sont présentes, détectées au moment de l'exécution plutôt qu'à l'installation.

    Alors, comment puis-je faire cela? Est-ce qu'il faut quelque chose comme plusieurs APKs avec différents manifests ?

  • Aucun dossier "apk" généré dans le dossier "Construction" lors de la création d'un APK
  • L'envoi de la demande de suivi jdwp a échoué
  • Auditeur OnCompletion avec MediaPlayer
  • Android a-t-il un moyen d'afficher la priorité de processus dans AdB?
  • Explication de la méthode getPixels pour un Bitmap dans Android
  • Comment synchroniser Play Multiplayer en temps réel de Play Services
  • 3 Solutions collect form web for “L'API Android Maps requiert openGL es 2”

    Mise à jour finale

    À partir de 2013/12/20, le tableau de bord Android montre qu'environ 100% des périphériques prennent désormais en charge OpenGL 2.0+, donc cette réponse n'est plus pertinente. Vous pouvez simplement exiger OpenGL ES 2.0+ dans votre manifeste.

    Mettre à jour

    Ceci est corrigé à partir de la rev. 7 du complément Google Play Services SDK. Il est sécuritaire d'utiliser <uses-feature android:glEsVersion="0x00020000" android:required="false"/> et de détecter OpenGL ES 2.0 en cours d'exécution .

    Réponse originale

    Il semble que Google Maps Android API v2 requiert une fonctionnalité <uses-feature android:glEsVersion="0x00020000" android:required="true/> dans AndroidManifest.xml donc il n'y a aucun moyen de déployer les services Google Maps Android API v2 sans À l'exclusion de tous les appareils OpenGL ES 1.x. Au moment de la rédaction de ce document, le tableau de bord Android de Google montre que, parmi les appareils 1.1 et 2.0, 90,8% des périphériques prennent en charge 2.0.

    Sur un périphérique particulier (Motorola XOOM), ce code entraîne supportsEs2 = true :

     // Check if the system supports OpenGL ES 2.0. final ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo(); final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000; 

    Toutefois, lorsqu'il n'y a pas de déclaration <uses-feature> dans le manifeste, MapFragment lance une RuntimeException:

      Caused by: java.lang.RuntimeException: Google Maps Android API only supports OpenGL ES 2.0 andabove. Please add <uses-feature android:glEsVersion="0x00020000" android:required="true" /> into AndroidManifest.xml at maps.y.ae.a(Unknown Source) at maps.y.bu.a(Unknown Source) at maps.yponCreateView(Unknown Source) at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:107) at android.os.Binder.transact(Binder.java:297) at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source) at com.google.android.gms.maps.SupportMapFragment$a.onCreateView(Unknown Source) at com.google.android.gms.internal.c$4.a(Unknown Source) at com.google.android.gms.internal.ca(Unknown Source) at com.google.android.gms.internal.c.onCreateView(Unknown Source) at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:884) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1066) at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1168) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:280) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669) ... 22 more 

    Voici l'espoir qu'une mise à jour de la bibliothèque Maps supprime cette limitation afin que nous puissions déployer un APK unique et utiliser les API d'exécution pour déterminer s'il faut charger la nouvelle expérience de Google Maps v2 ou revenir à une autre solution compatible.

    Ceci est corrigé et sera publié avec la prochaine version de l'API Android de Maps comme mentionné au numéro 4699

    J'ai eu le même problème, j'ai regardé autour de moi et la plupart des solutions suggérées pour l'émulateur ne fonctionnaient pas pour moi. Ensuite, j'ai trouvé une publication si l'émulateur de Genymotion avait été suggéré. Cet émulateur prend en charge OpenGL ES version 2. Il est également beaucoup plus rapide que l'émulateur standard.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.