Android NDK

 

Objectifs

Cet article va s'intéresser au NDK Android*, une suite d'outils permettant le développement d'applications Android avec du cote natif embarqué. Il décrit les structures de code de base pour les applications NDK natives. Nous allons aussi aborder l'installation du NDK ( native development kit) , et voir comment l'utiliser pour développer des applications.

Contenu

  1. Introduction au NDK Android*
  2. Quand utiliser le NDK ?
  3. Pré-requis système
  4. Installation du NDK
  5. La structure des applications NDK
  6. Construre des applications NDK
  7. Débugger des applications NDK
  8. Conclusion

Introduction au NDK Android*

Le NDK aide les développeurs Android* à inclure du C ou du C++ dans leurs applications. Il est composé de :

  • Un jeu d'outils et de scripts de build utilisés pour générer les librairies binaires pour l'architecture Intel® x86 à partir de fichiers sources C/C++ sur vos plateformes de développement
  • Des méthodes pour packager les librairies binaires natives dans les fichiers apk pour être installés sur des périphériques équipés de processeurs Intel® Atom™
  • Un jeu de headers et de librairies natives supportées par les plateformes Android*.

Quand utiliser le NDK ?

Les utilisations principales du NDK sont:

  • Réutiliser la logique et le code source implementés en C et en C++.
  • Dans certaines circonstances, obtenir de meilleurs performances.

Coder en C ou en C++ ne permet pas forcemment d'obtenir de meilleures performances dans les applications. Par contre, cela entraine systèmatiquement une complication du code. En dehors des 2 points cités ci-dessus, nous vous encouragons à implémenter les nouvelles fonctionnalités du SDK Android*.

Pré-requis système

Le SDK Android*
  • Android* 1.5 ou plus récent
  • Les applications qui utilisent des routines natives requièrent Android* 2.3 ou plus récent.
Java*
  • JDK 1.5 ou 1.6
Systèmes d'exploitations
  • Linux (32 or 64-bit, Ubuntu 11.04 or later, Fedora F-12 ou plus récent)
  • Windows XP* (32-bit), Windows Vista* ou Win 7* (32 or 64-bit), avec Cygwin 1.7 ou plus récent.)

Installation du NDK

Vous pouvez aller sur http://developer.android.com/sdk/ndk/index.html pour trouver le package d'installation.

  • Téléchargez le package du NDK pour l'environnement de développement que vous utilisez.
  • Extraire le package dans un dossier. Les fichiers du NDK se trouvent dans le dossier android-ndk- de ce répertoire.
  • Pour pouvoir supporter l'architecture Intel® Atom™ ,le NDK r6b ou supérieur est requis.

La structure des applications NDK.

Le NDK Android* est basé sur le framework de programmation Java* Native Interface (JNI).

  • Placez le code source de votre application Java sous $PROJECT/jni/ , et déclarez une ou plusieurs méthodes 'natives', qui indiquent qu'elles soient implémentées au travers de code natif. Par exemple: native String calculatePI(int decimalPosition);
  • Prenez une librairie native partagée nommée en accord avec la convention du standard UNIX. La librairie partagée contient l'implémentation de ces méthodes, par exemple: libpicalc.so. Cela sera inclus dans le fichier apk de votre application.
  • Chargez explicitement la librairie. par example : System.loadLibrary("picalc");
    Notez que le préfixe 'lib' et le suffixe '.so' du nom de la librairie partagée ne doivent pas être inclus en paramètre d'appel de la fontion loadLibrary. Pour plus d'informations à ce sujet, voir http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html
  • Placez votre code source sous $PROJECT/jni/.
  • Ecrivez $PROJECT/jni/Android.mk pour décrire vos sources au système de build du NDK.
  • Optionnel : écrivez $PROJECT/jni/Application.mk pour décrire votre projet de manière plus détaillée au système de build.

Développez des applications NDK

Vous pouvez développer votre code en natif en éxecutant le script"$NDK/ndk-build" depuis votre répertoire de projet, ou depuis n'importe lequel de ses sous dossiers. Pour inclure la cible x86, exécutez le script avec en argument APP_ABI="all".

  • Dans le NDK pour architecture Intel, utilisez le paramètre de ligne de commande "APP_ABI := x86 " Cela va générer la librairie partagée sous $PROJECT/libs/<arch>/
  • Maintenant vous pouvez utiliser la procédure habituelle pour réaliser votre apk Android*, en utilisant par exemple Eclipse* ou Apache Ant*. Le fichier apk généré est situé dans $PROJECT/bin. Vous pouvez désormais installer le fichier apk sur votre machine à base d'architecture Intel, ou sur un émulateur pour tester l'application.

Debuggage d'applications NDK

Le NDK fournit un script en ligne de commande, ndk-gdb, qui peut être utilisé pour débugger du code natif.

Conclusion

Pour les plateformes basées sur l'architecture Intel® , le NDK est un outil très utile qui complètera parfaitement le SDK. Dans certaines circonstances, il va vous permettre d'améliorer les performances de vos applications. En gardant en tête les objectifs d'un NDK et la complexité du code qui en découle, celui-ci va vous permettra de tester, débugger, et d'intégrer du code source natif à vos applications,

Notices

* Other names and brands may be claimed as the property of others

Copyright © 2011 Intel Corporation. All rights reserved.

Intel and Atom are trademarks of Intel Corporation in the U.S. and/or other countries.

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.

Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined". Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.

The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.

Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm

Optimization Notice
Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2®, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804


 

Pour de plus amples informations sur les optimisations de compilation, consultez notre Avertissement concernant les optimisations.