SlideShare una empresa de Scribd logo
1 de 13
Optimisation des Apps
natives pour Android x86.
Activez la compilation x86 via le NDK
Cottier Jean-Claude, Ovogame
ovo@ovogame.com
Appareils Android sous x86
La majorité des appareils Android sont basés sur
architecture ARM. Mais de nos jours, de plus en plus
d’appareil sont équipés de processeur Intel x86.
Tablettes: ASUS MeMO Pad, ASUS Fonepad, Dell Venue,
Samsung Galaxy Tab 3…
Téléphones: Intel Yolo, Etisalat E-20, Acer Liquid C1, ASUS
Fonepad Note FHD, Lenovo K900, ZTE Grand X2 In, ZTE
Geek, Motorola RAZR I, ZTE Grand X IN, Lava Xolo,
Megafon Mint, Lenovo K800…
JAVA
Java est un langage interprété via une machine virtuelle (Dalvik).
Il n’y a aucune importance si l’appareil est sous architecture ARM
ou x86.
NDK: code natif (C++)
Le NDK a été créé pour permettre l’utilisation de code natif dans les APK.
Principalement pour des raisons de vitesse mais aussi pour ouvrir aux
développeurs C++ l’accès à Android.
Le code C++ doit être compilé pour une architecture spécifique.
NDK: le répertoire libs
Une application peut ne faire que
quelques appels à ces librairies
natives, ou en dépendre
exclusivement.
Ces librairies peuvent être générées
à partir de code C++, ou être
fournit directement par un tiers.
Les librairies natives sont des fichiers
.so dans le répertoire libs.
NDK: le répertoire JNI
C’est le répertoire où placer votre code C++ et vos Makefiles.
Pour compiler les librairies, on utilise le script ndk-build
Application.mk sert en autre à
spécifier les architectures ciblées.
APP_ABI := armeabi
Librairie ARM sur architecture x86
Les librairies native ARM sont ‘interprétées’ sur architecture x86. C’est l’effet
inverse de celui attendu.
Plus lent que le natif.
Consomme plus
d’énergie.
Cibles Multiples
APP_ABI := x86 armeabi-v7a armeabi
lib/armeabi
lib/armeabi-v7a
lib/x86
APKs pour different CPUs
Deux options:
Un seul APK pour tous (“fat binary”)
Intégration d’une librairie native pour chaque architecture dans un seul APK.
Solution recommandée et aussi la plus simple.
Plusieurs APKs
Un APK par architecture. Seulement si nécessaire (par exemple si le ‘fat binary’
APK est trop gros et dépasse la limite de 50Mo).
Cas speciaux
Compilation conditionnelle dans Android.mk:
ifeq ($(TARGET_ARCH_ABI), x86)
‘Ce code n’est visible que lors de la compilation pour x86.’
endif
Code assembleur intégré au code source (ASM), portage nécessaire.
Utilisation de librairies tierses (3rd parties Lib) seulement compilées pour ARM: si
la version x86 n’est pas disponible, alors l’optimisation sera impossible.
Emulation
Installez les outils via l’Android SDK Manager.
Emulateur Intel plus
rapide.
x86 system image.
Middleware support pour x86
Game engines/librairies avec support x86:
 Havok Anarchy SDK
 Unreal Engine 3
 Marmalade
 Cocos2Dx
 FMOD
 AppGameKit
 libgdx
 …
Pas de support x86 mais les apps fonctionnent sur x86:
 Corona
 Unity
Conclusion
Si vous utilisez déjà le NDK, éditez simplement le fichier
Application.mk et ajoutez x86 comme cible dans la variable
APP_ABI. Cela sera très probablement suffisant.
APP_ABI := x86 armeabi-v7a armeabi
Vos applications tourneront plus rapidement sous x86 et
consommerons moins d’énergie.
Plus d’informations sur le site d’Intel: http://intel.ly/1jnDfAd

Más contenido relacionado

Más de BeMyApp

Crédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursCrédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursBeMyApp
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroBeMyApp
 
Tumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleTumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleBeMyApp
 
Building your first game in Unity 3d by Sarah Sexton
Building your first game in Unity 3d  by Sarah SextonBuilding your first game in Unity 3d  by Sarah Sexton
Building your first game in Unity 3d by Sarah SextonBeMyApp
 
Using intel's real sense to create games with natural user interfaces justi...
Using intel's real sense to create games with natural user interfaces   justi...Using intel's real sense to create games with natural user interfaces   justi...
Using intel's real sense to create games with natural user interfaces justi...BeMyApp
 
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsIntroduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsBeMyApp
 
Audio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchAudio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchBeMyApp
 
Shaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestShaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestBeMyApp
 
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart CityBeMyApp
 
Tools to Save Time
Tools to Save TimeTools to Save Time
Tools to Save TimeBeMyApp
 
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateurBeMyApp
 
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...BeMyApp
 
[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technologyBeMyApp
 
HP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapHP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapBeMyApp
 
Webinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoWebinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoBeMyApp
 
HP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsHP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsBeMyApp
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillBeMyApp
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 BeMyApp
 
HP Helion Webinar #2
HP Helion Webinar #2 HP Helion Webinar #2
HP Helion Webinar #2 BeMyApp
 
HP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian Frank
HP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian FrankHP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian Frank
HP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian FrankBeMyApp
 

Más de BeMyApp (20)

Crédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursCrédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et Parcours
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - Intro
 
Tumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleTumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensemble
 
Building your first game in Unity 3d by Sarah Sexton
Building your first game in Unity 3d  by Sarah SextonBuilding your first game in Unity 3d  by Sarah Sexton
Building your first game in Unity 3d by Sarah Sexton
 
Using intel's real sense to create games with natural user interfaces justi...
Using intel's real sense to create games with natural user interfaces   justi...Using intel's real sense to create games with natural user interfaces   justi...
Using intel's real sense to create games with natural user interfaces justi...
 
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsIntroduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
 
Audio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchAudio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy Touch
 
Shaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestShaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the Best
 
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
 
Tools to Save Time
Tools to Save TimeTools to Save Time
Tools to Save Time
 
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
 
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
 
[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology
 
HP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapHP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit Recap
 
Webinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoWebinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco Marcellino
 
HP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsHP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond Firewalls
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pill
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3
 
HP Helion Webinar #2
HP Helion Webinar #2 HP Helion Webinar #2
HP Helion Webinar #2
 
HP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian Frank
HP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian FrankHP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian Frank
HP Helion Webinar #1 - Introduction to HP Helion OpenStack w/Christian Frank
 

Intel Webinar 1 - Optimiser une app NDK pour x86

  • 1. Optimisation des Apps natives pour Android x86. Activez la compilation x86 via le NDK Cottier Jean-Claude, Ovogame ovo@ovogame.com
  • 2. Appareils Android sous x86 La majorité des appareils Android sont basés sur architecture ARM. Mais de nos jours, de plus en plus d’appareil sont équipés de processeur Intel x86. Tablettes: ASUS MeMO Pad, ASUS Fonepad, Dell Venue, Samsung Galaxy Tab 3… Téléphones: Intel Yolo, Etisalat E-20, Acer Liquid C1, ASUS Fonepad Note FHD, Lenovo K900, ZTE Grand X2 In, ZTE Geek, Motorola RAZR I, ZTE Grand X IN, Lava Xolo, Megafon Mint, Lenovo K800…
  • 3. JAVA Java est un langage interprété via une machine virtuelle (Dalvik). Il n’y a aucune importance si l’appareil est sous architecture ARM ou x86.
  • 4. NDK: code natif (C++) Le NDK a été créé pour permettre l’utilisation de code natif dans les APK. Principalement pour des raisons de vitesse mais aussi pour ouvrir aux développeurs C++ l’accès à Android. Le code C++ doit être compilé pour une architecture spécifique.
  • 5. NDK: le répertoire libs Une application peut ne faire que quelques appels à ces librairies natives, ou en dépendre exclusivement. Ces librairies peuvent être générées à partir de code C++, ou être fournit directement par un tiers. Les librairies natives sont des fichiers .so dans le répertoire libs.
  • 6. NDK: le répertoire JNI C’est le répertoire où placer votre code C++ et vos Makefiles. Pour compiler les librairies, on utilise le script ndk-build Application.mk sert en autre à spécifier les architectures ciblées. APP_ABI := armeabi
  • 7. Librairie ARM sur architecture x86 Les librairies native ARM sont ‘interprétées’ sur architecture x86. C’est l’effet inverse de celui attendu. Plus lent que le natif. Consomme plus d’énergie.
  • 8. Cibles Multiples APP_ABI := x86 armeabi-v7a armeabi lib/armeabi lib/armeabi-v7a lib/x86
  • 9. APKs pour different CPUs Deux options: Un seul APK pour tous (“fat binary”) Intégration d’une librairie native pour chaque architecture dans un seul APK. Solution recommandée et aussi la plus simple. Plusieurs APKs Un APK par architecture. Seulement si nécessaire (par exemple si le ‘fat binary’ APK est trop gros et dépasse la limite de 50Mo).
  • 10. Cas speciaux Compilation conditionnelle dans Android.mk: ifeq ($(TARGET_ARCH_ABI), x86) ‘Ce code n’est visible que lors de la compilation pour x86.’ endif Code assembleur intégré au code source (ASM), portage nécessaire. Utilisation de librairies tierses (3rd parties Lib) seulement compilées pour ARM: si la version x86 n’est pas disponible, alors l’optimisation sera impossible.
  • 11. Emulation Installez les outils via l’Android SDK Manager. Emulateur Intel plus rapide. x86 system image.
  • 12. Middleware support pour x86 Game engines/librairies avec support x86:  Havok Anarchy SDK  Unreal Engine 3  Marmalade  Cocos2Dx  FMOD  AppGameKit  libgdx  … Pas de support x86 mais les apps fonctionnent sur x86:  Corona  Unity
  • 13. Conclusion Si vous utilisez déjà le NDK, éditez simplement le fichier Application.mk et ajoutez x86 comme cible dans la variable APP_ABI. Cela sera très probablement suffisant. APP_ABI := x86 armeabi-v7a armeabi Vos applications tourneront plus rapidement sous x86 et consommerons moins d’énergie. Plus d’informations sur le site d’Intel: http://intel.ly/1jnDfAd