Utilisation d’extensions natives pour Adobe AIR

Les extensions natives pour Adobe AIR fournissent des API ActionScript permettant d’accéder à des fonctionnalités propres aux périphériques programmées en code natif. Bien qu’ils puissent être indépendants, les développeurs d’extensions natives collaborent parfois avec les fabricants des périphériques.

Si vous développez une extension native, consultez le document Développement d’extensions natives pour Adobe AIR.

Une extension native est une combinaison de :

  • Classes ActionScript.

  • Code natif.

Néanmoins, en tant que développeur d’applications AIR faisant appel à une extension native, vous utilisez exclusivement les classes ActionScript.

Les extensions natives sont utiles dans les cas suivants :

  • L’implémentation du code natif permet d’accéder à des fonctions propres à la plate-forme. Ces fonctions propres à la plate-forme ne sont pas disponibles dans les classes ActionScript intégrées. Il est en outre impossible de les implémenter dans des classes ActionScript propres à l’application. L’implémentation du code natif peut fournir cette fonctionnalité, car elle a accès au matériel et aux logiciels propres au périphérique.

  • Une implémentation de code natif peut parfois s’avérer plus rapide qu’une implémentation qui utilise uniquement ActionScript.

  • Grâce à l’implémentation du code natif, ActionScript peut accéder au code natif hérité.

Vous trouverez des exemples d’extensions natives sur le Pôle de développement Adobe. Par exemple, une extension native permet aux applications AIR d’accéder à la fonction de vibration d’Android. Voir Extensions natives pour Adobe AIR.

Adobe recommande

Si vous souhaitez partager un didacticiel.

Extending Adobe AIR (disponible en anglais uniquement)

Oliver Goldman

Developing Android Extensions for AIR3: A Beginner’s Guide (disponible en anglais uniquement)

Milkman Games

Fichiers AIR Native Extension (ANE)

Les développeurs d’extensions natives mettent en package une extension native dans un fichier ANE. Un fichier ANE est un fichier archive qui contient les bibliothèques et les ressources nécessaires à l’extension native.

Notez que pour certains périphériques, le fichier ANE contient la bibliothèque de code natif qu’utilise l’extension native. Pour d’autres, la bibliothèque de code natif est installée sur le périphérique. Dans certains cas, l’extension native ne possède pas de code natif pour un périphérique donné, elle est implémentée avec ActionScript uniquement.

En tant que développeur d’applications AIR, vous devez utiliser le fichier ANE de la manière suivante :

  • Ajoutez le fichier ANE au chemin d’accès à la bibliothèque de l’application de la même façon que vous ajoutez un fichier SWC au chemin d’accès à la bibliothèque. Cette action permet à l’application de référencer les classes ActionScript de l’extension.

    Remarque : lorsque vous compilez votre application, veillez à utiliser la liaison dynamique pour le fichier ANE. Si vous utilisez Flash Builder, spécifiez Externe dans le panneau des propriétés du chemin de génération ActionScript ; si vous utilisez la ligne de commande, spécifiez -external-library-path.
  • Mettez en package le fichier ANE avec l’application AIR.

Extensions natives ou classe NativeProcess ActionScript ?

ActionScript 3.0 fournit une classe NativeProcess. Cette classe permet à une application AIR d’exécuter des processus natifs sur le système d’exploitation hôte. Cette fonctionnalité est similaire aux extensions natives, qui permettent d’accéder aux fonctions et aux bibliothèques propres à la plate-forme. Si vous hésitez entre l’utilisation de la classe NativeProcess et l’utilisation d’une extension native, tenez compte des points suivants :

  • Seul le profil AIR extendedDesktop prend en charge la classe NativeProcess. Ainsi, pour les applications dotées des profils AIR mobileDevice et extendedMobileDevice, les extensions natives constituent la seule option.

  • Les développeurs d’extensions natives proposent souvent des implémentations natives pour diverses plates-formes, mais l’API ActionScript qu’ils fournissent est généralement la même sur toutes les plates-formes. Lors de l’utilisation de la classe NativeProcess, le code ActionScript permettant de lancer le processus natif peut varier selon les plates-formes.

  • La classe NativeProcess lance un processus distinct, tandis que l’extension native exécute le même processus que l’application AIR. Par conséquent, si le blocage de code vous préoccupe, utilisez la classe NativeProcess pour plus de sécurité. Un processus distinct signifie néanmoins que vous devrez probablement gérer la communication entre les processus.

Extensions natives ou bibliothèques de classes ActionScript (fichiers SWC) ?

Un fichier SWC est une bibliothèque de classes ActionScript dans un format d’archive. Le fichier SWC contient un fichier SWF et d’autres fichiers de ressources. Le fichier SWC permet de partager des classes ActionScript au lieu de partager du code ActionScript et des fichiers de ressources individuels.

Un package d’extensions natives est un fichier ANE. À l’instar d’un fichier SWC, un fichier ANE est une bibliothèque de classes ActionScript contenant un fichier SWF et d’autres fichiers de ressources dans un format d’archive. Toutefois, la principale différence entre un fichier ANE et un fichier SWC est que seul le fichier ANE peut contenir une bibliothèque de code natif.

Remarque : lorsque vous compilez votre application, veillez à utiliser la liaison dynamique pour le fichier ANE. Si vous utilisez Flash Builder, spécifiez Externe dans le panneau des propriétés du chemin de génération ActionScript ; si vous utilisez la ligne de commande, spécifiez -external-library-path.

Périphériques pris en charge

A partir d’AIR 3, vous pouvez utiliser des extensions natives dans les applications pour les périphériques suivants :

  • Périphériques Android, à partir d’Android 2.2

  • Périphériques iOS, à partir d’iOS 4.0

  • Simulateur iOS, à partir d’AIR 3.3

  • Blackberry Playbook

  • Périphériques de bureau Windows prenant en charge AIR 3.0

  • Périphériques de bureau Mac OS X prenant en charge AIR 3.0

Il n’est pas rare que la même extension native cible plusieurs plates-formes. Le fichier ANE de l’extension contient les bibliothèques ActionScript et les bibliothèques natives pour chaque plate-forme prise en charge. En règle générale, les bibliothèques ActionScript disposent des mêmes interfaces publiques pour toutes les plates-formes. Les bibliothèques natives sont nécessairement différentes.

Une extension native prend parfois en charge une plate-forme par défaut. L’implémentation de la plate-forme par défaut possède uniquement du code ActionScript. Si vous mettez en package une application pour une plate-forme que l’extension ne prend pas spécifiquement en charge, l’application fait appel à l’implémentation par défaut lors de son exécution. Par exemple, prenez le cas d’une extension disposant d’une fonction qui s’applique uniquement aux périphériques mobiles. L’extension peut également fournir une implémentation par défaut à laquelle peut faire appel une application de bureau pour simuler cette fonction.

Profils de périphérique pris en charge

Les profils AIR suivants prennent en charge les extensions natives :

  • extendedDesktop, à partir d’AIR 3.0

  • mobileDevice, à partir d’AIR 3.0

  • extendedMobileDevice, à partir d’AIR 3.0

Liste de tâches pour l’utilisation d’une extension native

Pour utiliser une extension native dans votre application, procédez de la façon suivante :

  1. Déclarez l’extension dans le fichier descripteur de votre application.

  2. Ajoutez le fichier ANE au chemin d’accès à la bibliothèque de l’application.

  3. Mettez en package l’application.

Déclaration de l’extension dans le fichier descripteur de l’application

Toutes les applications AIR possèdent un fichier descripteur de l’application. Lorsqu’une application utilise une extension native, le fichier descripteur de l’application inclut un élément <extensions>. Exemple :

<extensions> 
    <extensionID>com.example.Extension1</extensionID> 
    <extensionID>com.example.Extension2</extensionID> 
</extensions>

La valeur de l’élément extensionID est identique à celle de l’élément id dans le fichier descripteur de l’extension. Le fichier descripteur de l’extension est un fichier XML appelé extension.xml. Il est mis en package dans le fichier ANE. Vous pouvez utiliser un outil d’extraction pour accéder au fichier extension.xml.

Ajout du fichier ANE au chemin d’accès à la bibliothèque de l’application

Pour compiler une application qui utilise une extension native, ajoutez le fichier ANE au chemin d’accès à la bibliothèque.

Utilisation du fichier ANE avec Flash Builder

Si votre application a recours à une extension native, ajoutez le fichier ANE associé au chemin d’accès à la bibliothèque. Vous pouvez ensuite compiler le code ActionScript à l’aide de Flash Builder.

Suivez les étapes ci-dessous, qui font appel à Flash Builder 4.5.1 :

  1. Remplacez l’extension du fichier ANE, .ane, par .swc. Cette étape est nécessaire afin que Flash Builder puisse trouver le fichier.

  2. Sélectionnez Projet > Propriétés pour le projet Flash Builder.

  3. Sélectionnez Chemin de création Flex dans la boîte de dialogue Propriétés.

  4. Dans l’onglet Chemin d’accès à la bibliothèque, sélectionnez Ajouter un fichier SWC...

  5. Accédez au fichier SWC et sélectionnez Ouvrir.

  6. Cliquez sur OK dans la boîte de dialogue Ajouter un fichier SWC...

    Le fichier ANE apparaît à présent dans l’onglet du chemin d’accès à la bibliothèque de la boîte de dialogue Propriétés.

  7. Développez l’entrée relative au fichier SWC. Double-cliquez sur Type de lien pour ouvrir la boîte de dialogue Options de l’élément de chemin d’accès à la bibliothèque.

  8. Dans la boîte de dialogue Options de l’élément de chemin d’accès à la bibliothèque, sélectionnez le type de lien Externe.

Vous pouvez à présent compiler l’application à l’aide de Projet > Générer le projet, par exemple.

Utilisation du fichier ANE avec Flash Professional

Si votre application a recours à une extension native, ajoutez le fichier ANE associé au chemin d’accès à la bibliothèque. Vous pouvez ensuite compiler le code ActionScript à l’aide de Flash Professional CS5.5. Procédez comme suit :

  1. Remplacez l’extension du fichier ANE, .ane, par .swc. Cette étape est nécessaire afin que Flash Professional puisse trouver le fichier.

  2. Sélectionnez Fichier > Paramètres d’ActionScript pour le fichier FLA.

  3. Dans la boîte de dialogue Paramètres avancés d’ActionScript 3.0, sélectionnez l’onglet Chemin bibliothèque.

  4. Cliquez sur le bouton Localiser le fichier SWC.

  5. Accédez au fichier SWC et sélectionnez Ouvrir.

    Le fichier SWC figure à présent dans l’onglet Chemin bibliothèque de la boîte de dialogue Paramètres avancés d’ActionScript 3.0.

  6. Après avoir sélectionné le fichier SWC, sélectionnez le bouton Définir les options de liaison d’une bibliothèque.

  7. Dans la boîte de dialogue Options de l’élément de chemin d’accès à la bibliothèque, sélectionnez le type de lien Externe.

Mise en package d’une application faisant appel à des extensions natives

Utilisez l’outil AIR Developer (ADT) pour mettre en package une application faisant appel à des extensions natives. Vous ne pouvez pas mettre en package l’application avec Flash Professional CS5.5 ou Flash Builder 4.5.1.

Pour plus d’informations sur l’utilisation d’ADT, voir Outil AIR Developer (ADT).

Par exemple, la commande d’ADT suivante crée un fichier DMG (fichier de programme d’installation natif pour Mac OS X) pour une application faisant appel à des extensions natives :

adt -package 
    -storetype pkcs12 
    -keystore myCert.pfx 
    -target native 
    myApp.dmg 
    application.xml 
    index.html resources 
    -extdir extensionsDir
La commande suivante créé un package APK pour un périphérique Android :
adt -package 
    -target apk 
    -storetype pkcs12 -keystore ../codesign.p12 
    myApp.apk 
    myApp-app.xml 
    myApp.swf icons 
    -extdir extensionsDir

La commande suivante crée un package iOS pour une application iPhone :

adt -package 
    -target ipa-ad-hoc 
    -storetype pkcs12 -keystore ../AppleDistribution.p12 
    -provisioning-profile AppleDistribution.mobileprofile 
    myApp.ipa 
    myApp-app.xml 
    myApp.swf icons Default.png 
    -extdir extensionsDir

Remarques importantes :

  • Utilisez un package de type programme d’installation natif.

  • Spécifiez le répertoire de l’extension.

  • Assurez-vous que le fichier ANE prend en charge le périphérique cible de l’application.

Utilisation d’un package de type programme d’installation natif

Le package d’application doit être un programme d’installation natif. Vous ne pouvez pas créer un package AIR multiplateformes (un package .air) pour une application faisant appel à une extension native, car les extensions natives contiennent généralement du code natif. En revanche, une extension native prend généralement en charge plusieurs plates-formes natives avec les mêmes API ActionScript. Dans ces cas, vous pouvez recourir au même fichier ANE dans plusieurs packages de programmes d’installation natifs.

Le tableau suivant récapitule la valeur à utiliser pour l’option -target de la commande d’ADT :

Plate-forme cible de l’application

-target

Périphériques de bureau Mac OS X ou Windows

-target native

-target bundle

Android

-target apk

ou autres cibles de package Android.

iOS

-target ipa-ad-hoc

ou autres cibles de package iOS

Simulateur iOS

-target ipa-test-interpreter-simulator

-target ipa-debug-interpreter-simulator

Spécification du répertoire de l’extension

Utilisez l’option d’ADT -extdir pour indiquer à l’outil ADT le répertoire contenant les extensions natives (fichiers ANE).

Pour plus d’informations sur cette option, voir Options associées aux fichiers et chemins.

Vérification de la prise en charge du périphérique cible de l’application par le fichier ANE

Lorsqu’il fournit un fichier ANE, le développeur de l’extension native vous indique les plates-formes prises en charge par l’extension. Vous pouvez également utiliser un outil d’extraction pour accéder au contenu du fichier ANE. Les fichiers extraits comprennent un répertoire pour chaque plate-forme prise en charge.

Il est important de connaître les plates-formes prises en charge par l’extension lors de la mise en package de l’application qui utilise le fichier ANE. Tenez compte des règles suivantes :

  • Pour créer un package d’application Android, le fichier ANE doit inclure la plate-forme Android-ARM. Par ailleurs, le fichier ANE doit inclure la plate-forme par défaut et au moins une autre plate-forme.

  • Pour créer un package d’application iOS, le fichier ANE doit inclure la plate-forme iPhone-ARM. Par ailleurs, le fichier ANE doit inclure la plate-forme par défaut et au moins une autre plate-forme.

  • Pour créer un package de l’application Simulateur iOS, le fichier ANE doit inclure la plate-forme iPhone-x86.

  • Pour créer un package d’application Mac OS X, le fichier ANE doit inclure la plate-forme MacOS-x86 . Par ailleurs, le fichier ANE doit inclure la plate-forme par défaut et au moins une autre plate-forme.

  • Pour créer un package d’application Windows, le fichier ANE doit inclure la plate-forme Windows-x86 . Par ailleurs, le fichier ANE doit inclure la plate-forme par défaut et au moins une autre plate-forme.