3 votes

Pourquoi certaines applications ne sont-elles pas prises en charge par les appareils équipés d'un processeur Intel ?

Pokemon Go sort aujourd'hui, mais malheureusement, j'ai vu quelque part sur Internet que Niantic a affirmé que l'application est non supporté par les appareils avec processeur intel (dans mon cas asus zenfone 5). Je me demande donc pourquoi le type de processeur sera l'un des facteurs déterminer si l'application est compatible avec le dispositif . Toute aide est appréciée. =)

2voto

GiantTree Points 4016

Remarque : cette réponse couvre d'autres applications que Pokémon Go, car Pokémon Go a été mis à jour pour fonctionner avec les processeurs x86.

Les applications contiennent plusieurs parties dépendantes et indépendantes de l'architecture :

  • Indépendant :

    • Code Dalvik
    • Ressources Android
    • le Manifeste
  • Dépendante :

    • Bibliothèques
    • Code d'assemblage spécial dans l'exécutable Dalvik (rare mais possible)

Les principales choses sont les bibliothèques.
Ce sont des objets partagés ( .so ), tout comme les DLL sous Windows qui contiennent des fichiers bytecode .
Ils sont compilés à l'aide du NDK (Native Development Kit) d'Android et sont compilés pour une architecture spécifique (comme la compilation des applications Linux à l'aide d'un compilateur croisé, c'est-à-dire la compilation du code ARM sur une machine x86).
Dans notre exemple, cette bibliothèque ne peut être utilisée que dans un environnement ARM si le bytecode ARM est compris.

Certains appareils Android x86 (téléphones/tablettes commerciaux, pas les émulateurs) sont fournis avec une boîte à outils de traduction ARM spéciale, c'est-à-dire. libhoudini . Il traduit essentiellement les instructions ARM en instructions x86.
Cependant, ces instructions ne sont pas optimisées pour fonctionner sur du matériel x86, ce qui se traduit par des performances médiocres et une utilisation élevée de la batterie (ce dernier point est l'une des raisons pour lesquelles le x86 n'est pas principalement utilisé dans les processeurs mobiles).

Les vrais problèmes sont ceux des développeurs :
Soit :

  1. Pour une raison quelconque, ils ne compilent pas leurs bibliothèques (qui contiennent souvent du code propriétaire) pour une autre architecture.

  2. Ils utilisent un bytecode spécialisé, uniquement disponible sur ARM, de sorte que tout ARM Translator ou libhoudini échoue.

Heureusement, Pokémon Go a reçu une mise à jour, permettant aux utilisateurs d'appareils x86 d'exécuter l'application, mais d'autres applications (principalement des jeux) nécessitent un véritable appareil ARM.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X