Étude de cas : Implémenter la prise en charge d'Intel® x86 pour Android avec CRI Middleware

Vous pouvez commenter le contenu de cet article sur le forum Android : Commentez Donner une note à l'article (5)

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Vue d'ensemble

Les appareils Android équipés de processeurs Intel® Atom™ sont de plus en plus populaires, et des applications compatibles sont publiées tous les jours. Pour satisfaire les besoins des développeurs d'applications se consacrant au développement de jeux pour les appareils Android avec processeurs Intel Atom, les entreprises d'intergiciel ont commencé à supporter les architectures x86.

Une de ces entreprises, CRI Middleware Co., Ltd., propose une prise en charge de bibliothèques d'exécution en architecture x86 pour intergiciel Android. Cela a été réalisé en modifiant les paramètres de compilation du makefile dans le NDK d'Android et en remplaçant les instructions ARM NEON. Dans la prise en charge de l'architecture x86 par la bibliothèque d'exécution de middlewares pour appareils Android se trouve un plug-in pour Unity, un moteur de jeux vidéo développé par Unity Technologies, qui permet aux développeurs de construire des jeux en sélectionnant simplement le répertoire x86 comme cible de compilation dans le NDK d'Android.

II. À propos de CRI

CRI est une entreprise japonaise qui se consacre à la recherche, au développement et à la vente de middlewares audio et vidéo. Fondée en 1983 en tant qu'institut de recherche de CSK, une entreprise de vente de solutions informatiques, CRI a mis au point un intergiciel pour la console de jeux vidéo Sega. Après être devenu indépendante en 2001, l'entreprise CSK a collectionné les réalisations d'intergiciels pour les consoles de jeux, et conçoit aujourd'hui ses produits sous la marque CRIWARE.

Ces dernières années, CRI s'est concentré sur la prise en charge des smartphones et a étendu son intergiciel aux téléphones iPhone et Android. CRI fournit aujourd'hui le middleware audio intégré CRI ADX 2 pour Android, le middleware vidéo de haute qualité et hautes performances CRI Sofdec 2, et le middleware de compression de fichiers FileMajik PRO. En les utilisant, les développeurs de jeux et d'applications sont en mesure d'ajouter des vidéos puissantes aux jeux, de nouveaux rendus de communication avec le son interactif, tout en optimisant l'efficacité du développement.

Image non disponible

Middleware audio intégré CRI ADX 2

Image non disponible

High quality and high performance movie middleware CRI Sofdec 2

III. Contextes du support d'Intel® x86

CRI s'est concentré sur la prise en charge d'Intel x86 pour les middlewares depuis 2012, lorsque des appareils Android disposant de processeurs Intel Atom sont arrivés sur le marché. Les développeurs d'applications ont commencé à demander une prise en charge d'émulation x86 pour Android. L'émulateur ARM original comportait des problèmes de vitesse de fonctionnement lors de son émulation de l'architecture ARM, mais un fonctionnement à haute vitesse a été rendu possible en utilisant l'émulateur x86 et le gestionnaire d'exécution à accélération matérielle Intel® HAXM (Intel® Hardware Accelerated Execution Manager). De nombreux développeurs affirmaient qu'ils souhaitaient utiliser CRIWARE avec l'émulateur x86 pour gagner en efficacité de développement, et la première version prenant en charge l'architecture x86 a été proposée en juin 2013.

Yusuke Urushihata, directeur du service CRI, a expliqué que « la prise en charge de X86 est facile à réaliser en utilisant le NDK Android. Nous sommes en fait capable d'ajouter la prise en charge en ajoutant simplement une ligne à la destination de sortie du makefile. »

CRI a sorti CRIWARE pour l'environnement de développement du NDK Android.

Image non disponible

Environnement de développement du NDK

Plus tard, en août 2014, l'entreprise de moteur de jeu Unity Technologies a annoncé la prise en charge de x86 pour Unity 4 et 5, et un environnement de développement natif a été publié. Par conséquent, les développeurs ont ensuite demandé un support de x86 du middleware CRI pour la bibliothèque Unity que CRI a ensuite publiée.

Le responsable de l'intégration applicative de CRI, Atsushi Sakurai, a affirmé que « les développeurs de jeux (les utilisateurs) utilisant le moteur de jeu 3D Unity demandaient avec insistance la prise en charge des architectures x86, et nous avons donc décidé de fournir un support middleware de x86. »

Image non disponible

Environnement de développement d'Unity

À côté d'Unity, Coco2d-x est un autre framework de jeux vidéo orienté 2D soutenu par CRI, qui fonctionne dans l'environnement de développement natif d'Android. Comme il est écrit en C++, il n'a pas besoin de bibliothèque spéciale.

IV. Développement axé sur le support de x86

CRI a développé la bibliothèque d'exécution avec l'environnement de développement logiciel Android NDK, créant cela dans un ordre déterminé à l'avance et ajoutant des prises en charge sans aucun accroc.

La plupart des paramètres de compilation du makefile d'Android NDK (Android.mk) sont réparés et ajoutés ligne par ligne afin qu'ils soient produits en format x86.

Lorsqu'il a été temps de décoder le traitement des vidéos, CRI a utilisé les instructions ARM NEON, cependant cela a généré une erreur de compilation en faisant tourner une version pour x86. CRI a donc réécrit le code de traitement de décodage en code optimisé C et C++ qui a fait ses preuves sur les plateformes basées sur une architecture Intel®.

Pour prendre en charge immédiatement x86, il était crucial que le middleware fourni par CRI soit multiplateforme. La prise en charge multiplateforme était d'abord incluse dans le concept même du middleware de CRI, de sorte qu'un framework tel que le jeu d'instructions NEON existe pour passer à un autre environnement même dans le cas d'un problème spécifique à la cible. Par exemple, même si les endians du code source sont différents, ils sont automatiquement distingués en utilisant CRI pour configurer l'environnement compilé en little-endians.

V. Comment utiliser CRIWARE pour la prise en charge d'architectures x86

CRI fournit des bibliothèques pour ARM et x86.

La procédure d'utilisation d'Unity pour le développement de jeux vidéo et CRIWARE pour prendre en charge les architectures x86 pour les appareils Android avec processeurs Intel Atom est plutôt simple. Tout ce dont vous avez besoin est d'utiliser le NDK d'Android pour compiler l'application. Tant que vous utilisez un appareil Android avec un processeur Intel Atom et que vous avez un environnement de test, la prise en charge de x86 est facile à réaliser.

En environnement de développement natif, le makefile de l'application et les paramètres concernant x86 sont modifiés une ligne après l'autre lorsque vous lancez la compilation. Durant ce processus, la bibliothèque avec support de x86 est stockée dans un dossier x86 qui est automatiquement créé dans le dossier des bibliothèques.

Retrouvez toutes les ressources et outils Intel pour les développeurs Android sur la Zone des Développeurs Intel Android.

Le forum Intel Android pourra également vous aider dans vos questions.

VI. Ressources

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2016 Intel. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.