Sur la plate-forme Android, vous disposez de l’élément
android
du descripteur d’application pour ajouter des informations au manifeste d’application Android (fichier de propriétés d’application utilisé par le système d’exploitation Android). L’outil ADT génère automatiquement le fichier Manifest.xml Android lorsque vous créez le package APK. AIR définit quelques propriétés sur les valeurs requises pour assurer le fonctionnement de diverses fonctionnalités. Toute autre propriété définie dans la section android du descripteur d’application AIR est ajoutée à la section correspondante du fichier Manifest.xml.
Remarque :
pour la plupart des applications AIR, vous devez définir les autorisations Android requises par l’application dans l’élément
android
, mais il est généralement inutile de définir d’autres propriétés.
Vous ne pouvez définir que les attributs qui gèrent les valeurs de type chaîne, entier ou booléen. La définition de références sur des ressources du package d’application n’est pas prise en charge.
Remarque :
Le moteur d’exécution nécessite l’installation d’une version du kit SDK égale ou ultérieure à la version 14. Si vous souhaitez créer une application uniquement pour les versions ultérieures, vous devez vous assurer que le fichier manifeste inclut
<uses-sdk android:minSdkVersion=""></uses-sdk>
avec la version correcte appropriée.
Paramètres réservés du manifeste Android
AIR définit plusieurs entrées manifeste dans le document manifeste Android généré pour s’assurer que les fonctionnalités de l’application et du moteur d’exécution fonctionnent correctement. Il est impossible de définir les paramètres suivants :
Élément manifest
Il est impossible de définir les attributs suivants de l’élément manifest :
-
package
-
android:versionCode
-
android:versionName
-
xmlns:android
Élément activity
Il est impossible de définir les attributs suivants de l’élément activity principal :
-
android:label
-
android:icon
Élément application
Il est impossible de définir les attributs suivants de l’élément application :
Autorisations Android
Le modèle de sécurité Android requiert que chaque application demande l’autorisation d’utiliser les fonctionnalités dotées d’implications d’ordre sécuritaire ou confidentiel. Vous spécifiez ces autorisations lors de la mise en package de l’application et il est impossible de les modifier à l’exécution. Le système d’exploitation Android avertit l’utilisateur des autorisations demandées par une application lors de l’installation de cette dernière. Si l’application ne demande pas une autorisation associée à une fonctionnalité, le système d’exploitation risque de renvoyer une exception lorsque l’application accède à la fonctionnalité. Le renvoi de l’exception n’est toutefois pas garanti. Le moteur d’exécution transmet les exceptions à l’application. En cas d’échec silencieux, un message d’échec de l’autorisation est inséré dans le journal système d’Android.
Dans AIR, vous spécifiez les autorisations Android dans l’élément
android
du descripteur d’application. L’ajout d’autorisations fait appel au format suivant (PERMISSION_NAME correspondant au nom d’une autorisation Android) :
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.PERMISSION_NAME" />
</manifest>
]]>
</manifestAdditions>
</android>
Les instructions uses-permissions intégrées à l’élément
manifest
sont directement ajoutées au document manifeste Android.
Les autorisations suivantes sont obligatoires pour utiliser diverses fonctionnalités AIR :
-
ACCESS_COARSE_LOCATION
-
Permet à l’application d’accéder aux données de localisation du réseau Wi-Fi ou cellulaire via la classe Geolocation.
-
ACCESS_FINE_LOCATION
-
Permet à l’application d’accéder aux données GPS via la classe Geolocation.
-
ACCESS_NETWORK_STATE et ACCESS_WIFI_STATE
-
Permet à l’application d’accéder aux informations du réseau via la classe NetworkInfo.
-
CAMERA
-
Permet à l’application d’accéder à la caméra.
Remarque :
lorsque vous demandez l’autorisation d’utiliser la fonctionnalité caméra, Android part du principe que l’application requiert également la caméra. Si la caméra est une fonctionnalité facultative de l’application, ajoutez un élément
uses-feature
relatif à la caméra au manifeste en définissant l’attribut requis sur
false
. Voir
Filtrage de la compatibilité Android
.
-
INTERNET
-
Permet à l’application d’effectuer des requêtes réseau. Permet également de procéder au débogage à distance.
-
READ_PHONE_STATE
-
Permet au moteur d’exécution d’AIR de couper le son lors d’appels téléphoniques. Définissez cette autorisation si l’application lit l’audio lorsqu’elle s’exécute en arrière-plan.
-
RECORD_AUDIO
-
Permet à l’application d’accéder au microphone.
-
WAKE_LOCK et DISABLE_KEYGUARD
-
Permet à l’application d’empêcher le périphérique d’entrer en mode de veille à l’aide des paramètres de la classe SystemIdleMode.
-
WRITE_EXTERNAL_STORAGE
-
Permet à l’application d’écrire sur la carte mémoire externe du périphérique.
Ainsi, si une application nécessite toutes les autorisations, vous pourriez ajouter l’élément suivant au descripteur de l’application pour les définir :
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
]]>
</manifestAdditions>
</android>
Modèles personnalisés d’URI Android
Vous pouvez utiliser un modèle URI personnalisé pour lancer une application AIR à partir d’une page Web ou une application Android native. Etant donné que la prise en charge des URI personnalisés repose sur des filtres d’intention spécifiés dans le manifeste Android, il est impossible d’utiliser cette technique sur d’autres plates-formes.
Pour utiliser un URI personnalisé, ajoutez un élément intent-filter au descripteur d’application dans le bloc
<android>
. Les deux éléments
intent-filter
de l’exemple suivant sont obligatoires. Modifiez l’instruction
<data android:scheme="
my-customuri
"/>
en fonction de la chaîne URI associée au modèle personnalisé.
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<application>
<activity>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="my-customuri"/>
</intent-filter>
</activity>
</application>
</manifest>
]]>
</manifestAdditions>
</android>
Un filtre d’intention avertit le système d’exploitation Android que l’application est en mesure d’exécuter une action donnée. Dans le cas d’un URI personnalisé, cela signifie que l’utilisateur a cliqué sur un lien basé sur ce modèle d’URI (et le navigateur ne sait pas comment le gérer).
Si l’application est appelée par le biais d’un URI personnalisé, l’objet NativeApplication distribue un événement
invoke
. L’URL du lien, paramètres d’interrogation inclus, est placée dans le tableau
arguments
de l’objet InvokeEvent. Vous disposez d’un nombre illimité d’éléments intent-filter.
Remarque :
les liens dans une occurrence de StageWebView ne peuvent pas ouvrir les URL qui font appel à un modèle d’URI personnalisé.
Filtrage de la compatibilité Android
Le système d’exploitation Android utilise divers éléments du fichier manifeste de l’application pour déterminer si celle-ci est compatible avec un périphérique donné. L’ajout de ces informations au fichier manifeste est facultatif. Si vous n’incluez pas ces éléments, l’application peut être installée sur tout périphérique Android. Elle risque toutefois de ne fonctionner correctement sur aucun périphérique Android. Une application pour caméra s’avère par exemple d’une utilité limitée sur un téléphone qui n’est pas équipé de caméra.
Vous disposez des balises de manifeste Android suivantes à des fins de filtrage :
-
supports-screens
-
uses-configuration
-
uses-feature
-
uses-sdk (dans AIR 3+)
Applications pour caméra
Si vous demandez l’autorisation caméra pour l’application, Android part du principe que l’application nécessite toutes les fonctionnalités de caméra disponibles, y compris la mise au point automatique et le flash. Si l’application ne requiert pas toutes les fonctionnalités de caméra ou si la caméra est une fonctionnalité facultative, définissez les divers éléments
uses-feature
associés à la caméra pour indiquer qu’ils sont facultatifs. Les utilisateurs dont le périphérique ne gère pas une fonctionnalité ou n’est pas équipé de caméra ne pourront sinon pas trouver l’application dans Android Market.
L’exemple suivant illustre la procédure de demande de l’autorisation caméra et indique comment rendre toutes les fonctionnalités de la caméra facultatives :
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
</manifest>
]]>
</manifestAdditions>
</android>
Applications d’enregistrement de l’audio
Si vous demandez l’autorisation d’enregistrer l’audio, Android considère comme acquis que l’application nécessite un microphone. Si l’enregistrement de l’audio est une fonctionnalité facultative de l’application, vous disposez d’une balise uses-feature pour spécifier que le microphone est inutile. Les utilisateurs dont le périphérique n’est pas équipé d’un microphone ne pourront sinon pas trouver l’application sur Android Market.
L’exemple suivant illustre la procédure de demande d’une autorisation d’utilisation du microphone, le matériel associé restant facultatif :
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.microphone" android:required="false"/>
</manifest>
]]>
</manifestAdditions>
</android>
Emplacement d’installation
Vous pouvez autoriser l’installation ou le transfert de l’application sur la carte mémoire externe en définissant l’attribut
installLocation
de l’élément Android
manifest
sur
auto
ou
preferExternal
:
<android>
<manifestAdditions>
<![CDATA[
<manifest android:installLocation="preferExternal"/>
]]>
</manifestAdditions>
</android>
Le système d’exploitation Android ne garantit pas que l’application soit installée sur la carte mémoire externe. Un utilisateur peut également transférer une application entre la mémoire interne et la mémoire externe par le biais de l’application Réglages du système.
Même si l’application est installée sur la carte mémoire externe, le cache d’application, les données utilisateur telles que le contenu du répertoire app-storage, les objets partagés et les fichiers temporaires continuent à être stockés en mémoire interne. Pour éviter de solliciter trop de mémoire interne, sélectionnez avec discernement les données enregistrées dans le répertoire de stockage de l’application. Enregistrez les volumes élevés de données sur la carte SD (emplacements
File.userDirectory
ou
File.documentsDirectory
, qui pointent tous deux vers la racine de la carte SD sous Android).
Activation de Flash Player et d’autres modules d’extension dans un objet StageWebView
Dans Android 3.0 et les versions ultérieures, l’application doit activer l’accélération matérielle dans l’élément de l’application Android pour afficher le contenu des modules d’extension dans un objet StageWebView. Pour activer le rendu sur le module d’extension, définissez l’attribut
android:hardwareAccelerated
de l’élément
application
sur
true
:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<application android:hardwareAccelerated="true"/>
</manifest>
]]>
</manifestAdditions>
</android>
Codage des couleurs
Dans AIR 3 et les versions ultérieures, le moteur d’exécution configure l’écran de façon à ce qu’il effectue le rendu des couleurs 32 bits. Dans les versions antérieures d’AIR, le moteur d’exécution utilise les couleurs 16 bits. Vous pouvez demander au moteur d’exécution d’utiliser les couleurs 16 bits à l’aide de l’élément <colorDepth> du descripteur d’application :
<android>
<colorDepth>16bit</colorDepth>
<manifestAdditions>...</manifestAdditions>
</android>
L’utilisation de la profondeur de couleurs 16 bits peut augmenter les performances de rendu, au détriment de la fidélité des couleurs.
|
|
|