Adobe: Creación de Aplicaciones de AIR
Adobe: Creación de Aplicaciones de AIR
Contenido
Capítulo 1: Presentación de Adobe AIR
Novedades de AIR 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Novedades de AIR 1.5 ................................................................................................. 3
Novedades de AIR 1.5.1 ................................................................................................ 4
Novedades de AIR 1.5.2 ................................................................................................ 4
Novedades en la versión beta de AIR 2 ................................................................................. 5
Capítulo 5: Creación de la primera aplicación de AIR de Flex en Flash Builder o Flex Builder
Creación de un proyecto de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Escritura del código de aplicaciones de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Prueba de la aplicación de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Empaquetado, firma y ejecución de una aplicación de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Capítulo 9: Creación de la primera aplicación de AIR basada en HTML con el SDK de AIR
Creación de archivos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Creación del archivo descriptor de la aplicación de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Creación de la página HTML de la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Prueba de la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Creación de un archivo de instalación de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Pasos siguientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Capítulo 10: Creación de aplicaciones de AIR con las herramientas de la línea de comandos
Compilación de archivos de origen MXML y ActionScript para AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Compilación de una biblioteca de código o componente de AIR (Flex) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Utilización de AIR Debug Launcher (ADL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Empaquetado de archivos de instalación de AIR con AIR Developer Tool (ADT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Firma de un archivo de AIR para cambiar el certificado de la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Creación de certificados con firma automática con ADT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Al desarrollar aplicaciones para AIR se puede aprovechar un juego enriquecido de arquitecturas e interfaces API:
• API específicas para AIR proporcionadas por el motor de ejecución y la arquitectura de AIR.
• API de ActionScript utilizadas en archivos SWF y la arquitectura de Flex (además de otras bibliotecas y
arquitecturas basadas en ActionScript).
• HTML, CSS y JavaScript.
• La mayoría de las arquitecturas de Ajax.
AIR es toda una novedad en la forma de crear, implementar y experimentar las aplicaciones. Permite tener un mayor
control creativo y extender al escritorio las aplicaciones basadas en Flash, Flex, HTML y Ajax sin necesidad de
aprender las tradicionales tecnologías de desarrollo del escritorio.
• La versión de WebKit utilizada por Adobe AIR se ha actualizado y ahora incluye compatibilidad para el intérprete
de JavaScript, SquirrelFish.
• Nuevas API de validación de firmas XML que se pueden utilizar para ayudar a verificar la integridad y la identidad
del firmante de los datos o información. Para obtener más información, consulte Validación de la firma XML en
AIR (para desarrolladores de ActionScript), o bien, consulte Validación de la firma XML en AIR (para
desarrolladores de HTML).
Para obtener más información sobre la versión de AIR 1.5, consulte las notas de versión de Adobe AIR 1.5
(http://www.adobe.com/go/learn_air_relnotes_es).
Nuevas APIs
InvokeEvent.reason
Esta nueva propiedad del evento InvokeEvent indica si el usuario inició la aplicación mediante el usuario o
automáticamente al iniciar la sesión. La clase InvokeEventReason (en el paquete flash.desktop) define los dos posibles
valores de cadena para la propiedad InvokeEvent.reason. InvokeEventReason.LOGIN define el caso de inicio de
sesión; InvokeEventReason.STANDARD define el caso estándar.
Capabilities.cpuArchitecture
Esta nueva propiedad devuelve la arquitectura del procesador del equipo, como cadena (por ejemplo, "PowerPC" o
"x86").
Si desea aprovechar estas nuevas API de AIR 1.5.1, actualice el descriptor de la aplicación para que utilice el espacio de
nombres 1.5.1:
xmlns="http://ns.adobe.com/air/application/1.5.1"
Si no necesita utilizar estas nuevas API, no es necesario actualizar el descriptor de la aplicación. La aplicación podrá
ejecutarse con AIR 1.5.1 cuando el usuario actualice la versión del motor de ejecución instalado en el sistema.
Para obtener más información sobre la versión de AIR 1.5.1, consulte las notas de versión de Adobe AIR 1.5.1
(http://www.adobe.com/go/learn_air_relnotes_es).
Nuevas APIs
Capabilities.supports32BitProcesses y Capabilities.supports64BitProcesses
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 5
Presentación de Adobe AIR
Esta propiedad indica si los objetos LocalConnection están en el ámbito del usuario actual (true) o son globalmente
accesibles para todos los usuarios del equipo (false). Esta propiedad sólo afecta al contenido que se ejecuta en Mac OS;
en otras plataformas se omite este parámetro. Por ejemplo, las conexiones locales en Windows y Linux siempre son
por usuario. En versiones anteriores, todos los objetos LocalConnection en Mac OS contaban con un ámbito global.
Por motivos de seguridad, establezca siempre esta propiedad en true, a menos que necesite conservar la compatibilidad
con versiones anteriores. En futuras versiones, es probable que esta propiedad tenga un valor predeterminado de true.
System.disposeXML()
Este método estático hace que un objeto XML de ActionScript esté inmediatamente disponible para la eliminación de
datos innecesarios. Este método elimina las conexiones principales y secundarias entre todos los nodos para el objeto
XML especificado. Este método adopta un parámetro: que el objeto XML esté disponible para la eliminación de datos
innecesarios. Utilice este método para garantizar una eliminación de memoria eficaz asociada a objetos XML.
Desde una línea de comandos, puede definir los permisos de archivo con el comando chmod +x installer.bin.
Algunas versiones de Linux permiten establecer permisos de archivo en el cuadro de diálogo de propiedades que se
abre mediante un menú contextual.
3 Ejecute el instalador desde la línea de comandos o haciendo doble clic en el archivo de instalación.
4 Siga las indicaciones que aparecen en la ventana de instalación para llevar a cabo la instalación.
AIR se instala como paquete rpm o dpkg, con los nombres: adobeairv.n y adobecerts. La instalación requiere la
ejecución de un servidor X. AIR registra el tipo mime: application/vnd.adobe.air-application-installer-
package+zip.
3 Si opta por descargar aplicaciones de muestra y ejecutarlas más adelante, seleccione los vínculos de descarga. Las
aplicaciones de AIR pueden ejecutarse en cualquier momento de la siguiente manera:
• En Windows, haga doble clic en el icono de la aplicación que se encuentra en el escritorio o seleccione la
aplicación en el menú Inicio.
• En Mac OS, haga doble clic en el icono de la aplicación, que se instala por omisión en la carpeta Aplicaciones de
su directorio de usuario (por ejemplo, en Macintosh HD/Usuarios/UsuarioFicticio/Aplicaciones/).
• En Linux, haga doble clic en el icono de la aplicación que se encuentra en el escritorio o seleccione la aplicación
en el menú de aplicaciones. Las aplicaciones de AIR se instalan en su propia carpeta en el directorio /opt.
Nota: revise las notas de versión de AIR por si hubiera alguna actualización de estas instrucciones. Puede encontrarlas
en: http://www.adobe.com/go/learn_air_relnotes_es.
Clase Paquete
AAAARecord flash.net.dns
ApplicationUpdater air.update
ApplicationUpdaterUI air.update
ARecord flash.net.dns
BrowserInvokeEvent flash.events
CertificateStatus flash.security
CompressionAlgorithm flash.utils
DatagramSocket flash.net
DatagramSocketDataEvent flash.events
DNSResolver flash.net.dns
DNSResolverEvent flash.events
DockIcon flash.desktop
DownloadErrorEvent air.update.events
DRMAuthenticateEvent flash.events
DRMManagerError flash.errors
EncryptedLocalStore flash.data
File flash.filesystem
FileListEvent flash.events
FileMode flash.filesystem
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 10
Funcionalidad específica de Adobe AIR
Clase Paquete
FileStream flash.filesystem
FocusDirection flash.display
Geolocation flash.sensors
GeolocationEvent flash.events
HTMLHistoryItem flash.html
HTMLHost flash.html
HTMLLoader flash.html
HTMLPDFCapability flash.html
HTMLUncaughtScriptExceptionEvent flash.events
HTMLWindowCreateOptions flash.html
Icon flash.desktop
InteractiveIcon flash.desktop
InterfaceAddress flash.net
InvokeEvent flash.events
InvokeEventReason flash.desktop
MXRecord flash.net.dns
NativeApplication flash.desktop
NativeDragActions flash.desktop
NativeDragEvent flash.events
NativeDragManager flash.desktop
NativeDragOptions flash.desktop
NativeMenu flash.display
NativeMenuItem flash.display
NativeProcess flash.desktop
NativeProcessExitEvent flash.events
NativeProcessStartupInfo flash.desktop
NativeWindow flash.display
NativeWindowBoundsEvent flash.events
NativeWindowDisplayState flash.display
NativeWindowDisplayStateEvent flash.events
NativeWindowInitOptions flash.display
NativeWindowResize flash.display
NativeWindowSystemChrome flash.display
NativeWindowType flash.display
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 11
Funcionalidad específica de Adobe AIR
Clase Paquete
NetworkInfo flash.net
NetworkInterface flash.net
NotificationType flash.desktop
OutputProgressEvent flash.events
PaperSize flash.printing
PrintMethod flash.printing
PrintUIOptions flash.printing
PTRRecord flash.net.dns
ReferencesValidationSetting flash.security
ResourceRecord flash.net.dns
RevocationCheckSettings flash.security
Screen flash.display
ScreenMouseEvent flash.events
SecureSocket flash.net
SecureSocketMonitor air.net
SecureSocketConnectEvent flash.net
ServiceMonitor air.net
SignatureStatus flash.security
SignerTrustSettings flash.security
SocketMonitor air.net
SQLCollationType flash.data
SQLColumnNameStyle flash.data
SQLColumnSchema flash.data
SQLConnection flash.data
SQLError flash.errors
SQLErrorEvent flash.events
SQLErrorOperation flash.errors
SQLEvent flash.events
SQLIndexSchema flash.data
SQLMode flash.data
SQLResult flash.data
SQLSchema flash.data
SQLSchemaResult flash.data
SQLStatement flash.data
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 12
Funcionalidad específica de Adobe AIR
Clase Paquete
SQLTableSchema flash.data
SQLTransactionLockType flash.data
SQLTriggerSchema flash.data
SQLUpdateEvent flash.events
SQLViewSchema flash.data
SRVRecord flash.net.dns
StageAspectRatio flash.display
StageOrientation flash.display
StageOrientationEvent flash.events
StatusFileUpdateErrorEvent air.update.events
StatusFileUpdateEvent air.update.events
StatusUpdateErrorEvent air.update.events
StatusUpdateEvent air.update.events
StorageVolume flash.filesystem
StorageVolumeChangeEvent flash.events
StorageVolumeInfo flash.filesystem
SystemTrayIcon flash.desktop
UpdateEvent air.update.events
Updater flash.desktop
URLFilePromise air.desktop
URLMonitor air.net
URLRequestDefaults flash.net
XMLSignatureValidator flash.security
Capabilities languages
Clipboard supportsFilePromise
ClipboardFormats BITMAP_FORMAT
FILE_LIST_FORMAT
FILE_PROMISE_LIST_FORMAT
URL_FORMAT
Event DISPLAYING
EXITING
HTML_BOUNDS_CHANGE
HTML_DOM_INITIALIZE
HTML_RENDER
LOCATION_CHANGE
NETWORK_CHANGE
USER_IDLE
USER_PRESENT
FileReference uploadUnencoded()
HTTPStatusEvent HTTP_RESPONSE_STATUS
responseURL
responseHeaders
KeyboardEvent commandKey
controlKey
LoaderContext allowLoadBytesCodeExecution
LoaderInfo parentSandboxBridge
childSandboxBridge
NetStream resetDRMVouchers()
setDRMAuthenticationCredentials()
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 14
Funcionalidad específica de Adobe AIR
PrintJob active
copies
firstPage
isColor
jobName
lastPage
maxPixelsPerInch
paperArea
printableArea
printer
printers
supportsPageSetupDialog
maxPixelsPerInch
URLRequest followRedirects
manageCookies
shouldAuthenticate
shouldCacheResponse
userAgent
userCache
selectPaperSize()
showPageSetupDialog()
start2()
terminate()
PrintJobOptions resolution
Stage nativeWindow
Security APPLICATION
La mayoría de estos nuevos métodos y propiedades sólo están disponibles para contenido que se encuentra en el
entorno limitado de seguridad de la aplicación de AIR. No obstante, los nuevos integrantes de las clases URLRequest
también están disponibles para el contenido que se ejecuta en otros entornos limitados.
Los métodos ByteArray.compress() y ByteArray.uncompress() incluyen cada uno un nuevo parámetro,
algorithm, que permite seleccionar entre la compresión deflate y zlib. Este parámetro está disponible únicamente en
el contenido que se ejecuta en AIR.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 15
Funcionalidad específica de Adobe AIR
Requisitos del sistema para la Actualización de Adobe AIR para Flash CS3
Para poder utilizar Flash CS3 en el desarrollo y la ejecución de aplicaciones de AIR, debe tener el siguiente software
instalado:
• Flash CS3 Professional
Si no dispone de una copia de Flash CS3 Professional, puede adquirirla en el sitio web de Adobe:
http://www.adobe.com/es/products/flash/
• Adobe AIR
Para obtener información sobre la instalación de Adobe AIR, consulte “Instalación de Adobe AIR” en la página 6.
• Actualización de Adobe AIR para Flash CS3
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 17
Herramientas de la Plataforma Adobe Flash para el desarrollo de AIR
Los certificados digitales emitidos por las entidades de emisión de certificados como, por ejemplo, VeriSign, Thawte,
GlobalSign y ChosenSecurity garantizan al usuario su identidad como editor y comprueban que el archivo de
instalación no se haya modificado desde la firma. Los certificados digitales con firma automática cumplen la misma
función, pero no proporcionan validación por parte de un tercero.
También tiene la opción de empaquetar la aplicación de AIR sin una firma digital, creando un archivo de AIR
intermedio (.airi). Un archivo de AIR intermedio no es válido porque no se puede instalar. Se utiliza en cambio para
la comprobación (por parte del desarrollador) y se puede iniciar utilizando la herramienta de la línea de comandos
ADT de AIR. AIR proporciona esta capacidad, ya que en algunos entornos de desarrollo un desarrollador o equipo
concreto administran la firma. Con esta práctica se garantiza un nivel adicional de seguridad en la administración de
certificados digitales.
Para obtener más información sobre el proceso de firma de aplicaciones, consulte “Firma digital de archivos de AIR”
en la página 96.
Las herramientas de la línea de comandos de AIR requieren Java para su instalación en el equipo. Puede utilizar la
máquina virtual Java desde JRE o JDK (versión 1.4 o posterior). Java JRE y Java JDK se encuentran disponibles en
http://java.sun.com/.
Nota: Java no se requiere para los usuarios finales que ejecuten aplicaciones de AIR.
BIN adl.exe: AIR Debug Launcher (ADL) permite ejecutar una aplicación de AIR sin
empaquetarla e instalarla primero. Para obtener más información sobre el uso de esta
herramienta, consulte “Utilización de AIR Debug Launcher (ADL)” en la página 51.
adt.bat: AIR Developer Tool (ADT) empaqueta la aplicación como archivo de AIR para
distribución. Para obtener información sobre el uso de esta herramienta, consulte
“Empaquetado de archivos de instalación de AIR con AIR Developer Tool (ADT)” en la
página 54.
FRAMEWORKS AIRAliases.js: proporciona definiciones "alias" que permiten acceder a las clases del
motor de ejecución de ActionScript. Para obtener más información sobre el uso de
este archivo alias, consulte Utilización del archivo AIRAliases.js. servicemonitor.swf:
proporciona aplicaciones de AIR con medios basados en eventos de respuesta a
cambios en conectividad de red en un host especificado. Para obtener más
información sobre esta arquitectura, consulte Cambios de conectividad de red. (para
desarrolladores de ActionScript) o Cambios de conectividad de red. (para
desarrolladores de HTML).
LIB adt.jar: archivo ejecutable adt, que se llama mediante el archivo adt.bat.
Descriptor.1.0.xsd: archivo de esquema de la aplicación.
RUNTIME Motor de ejecución de AIR: ADL utiliza el motor de ejecución para iniciar las
aplicaciones de AIR antes de que se empaqueten o se instalen.
SRC Esta carpeta contiene los archivos de origen para el ejemplo de instalación integrada.
La única diferencia entre las versiones de las utilidades de Flex y AIR radica en que las versiones de AIR cargan
opciones de configuración desde el archivo air-config.xml en lugar del archivo flex-config.xml.
Las herramientas del SDK de Flex y sus opciones de la línea de comandos se describen en su totalidad en Building and
Deploying Flex Applications (Creación e implementación de aplicaciones de Flex) en la biblioteca de documentación
de Flex. Las herramientas del SDK de Flex se describen aquí en un nivel básico como ayuda en su introducción y para
destacar las diferencias existentes entre la creación de aplicaciones de Flex y la creación de aplicaciones de AIR.
Para obtener más información, consulte Creación de aplicaciones de AIR con las herramientas de la línea de
comandos.
3 Añada el siguiente bloque de estilo inmediatamente después de la etiqueta inicial WindowedApplication y antes de
la etiqueta del componente label introduzca:
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
s|WindowedApplication
{
skinClass:ClassReference("spark.skins.spark.SparkChromeWindowedApplicationSkin");
background-color:#999999;
background-alpha:"0.7";
}
</fx:Style>
Esta configuración de estilo se aplica a toda la aplicación y se procesa el fondo de la ventana con un gris ligeramente
transparente.
El código de la aplicación presenta en este momento el siguiente aspecto:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 28
Creación de la primera aplicación de AIR de Flex en Flash Builder o Flex Builder
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
s|WindowedApplication
{
skinClass:ClassReference("spark.skins.spark.SparkChromeWindowedApplicationSkin");
background-color:#999999;
background-alpha:"0.7";
}
</fx:Style>
A continuación, se modificará parte de la configuración para permitir que la aplicación sea transparente:
1 En el panel Flex Navigator (Navegador de Flex), sitúe el archivo descriptor de la aplicación en el directorio de origen
del proyecto. Si se ha asignado el nombre AIRHelloWorld al proyecto, este archivo se denomina AIRHelloWorld-
app.xml.
2 Haga doble clic en el archivo descriptor de la aplicación para editarlo en Flash Builder.
3 En el código XML, sitúe las líneas de comentarios para las propiedades systemChrome y transparent (de la
propiedad initialWindow). Elimine los comentarios. (Elimine los delimitadores de comentarios "<!--" y "-->".)
4 Establezca el valor de texto de la propiedad systemChrome en none, tal y como se muestra a continuación:
<systemChrome>none</systemChrome>
5 Establezca el valor de texto de la propiedad transparent en true, tal y como se indica a continuación:
<transparent>true</transparent>
6 Guarde el archivo.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 29
Creación de la primera aplicación de AIR de Flex en Flash Builder o Flex Builder
2 Con el uso de las propiedades horizontalCenter y verrticalCenter del control Label, el texto se sitúa en el
centro de la ventana. Mueva o cambie el tamaño de la ventana tal y como lo haría en cualquier otra aplicación de
escritorio.
Nota: si la aplicación no se compila, corrija la sintaxis o los errores ortográficos que se hayan podido introducir
accidentalmente en el código. Los errores y advertencias se muestran en la vista Problems (Problemas) de Flash Builder.
En este ejemplo sólo se establecen unas cuantas de las posibles propiedades de la aplicación. Para obtener el conjunto
completo de las propiedades de la aplicación, que permiten especificar determinados aspectos, como el tamaño y el
fondo cromático de la ventana, la transparencia, el directorio de instalación predeterminado, los tipos de archivo
asociados y los iconos de la aplicación, consulte “Configuración de las propiedades de una aplicación de AIR” en la
página 71
Estos estilos se aplican a toda la aplicación y el fondo de ventana se configura para que sea gris ligeramente
transparente.
Todo el código de la aplicación presenta en este momento el siguiente aspecto:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
title="Hello World">
<mx:Style>
WindowedApplication
{
background-color:"0x999999";
background-alpha:"0.5";
}
</mx:Style>
<mx:Label text="Hello World" horizontalCenter="0" verticalCenter="0"/>
</mx:WindowedApplication>
Compilación de la aplicación
Antes de que se pueda ejecutar y depurar la aplicación, compile el código MXML en un archivo SWF utilizando el
compilador amxmlc. El compilador amxmlc se encuentra en el directorio bin del SDK de Flex. Si lo desea, el entorno
de ruta del equipo se puede configurar para que incluya el directorio bin del SDK de Flex. Al establecer la ruta, se
facilita la ejecución de las utilidades en la línea de comandos.
1 Abra un shell de comandos o una terminal y desplácese a la carpeta del proyecto de la aplicación de AIR.
2 Indique el siguiente comando:
amxmlc HelloWorld.mxml
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 34
Creación de la primera aplicación de AIR con el SDK de Flex
Con la ejecución de amxmlc se genera HelloWorld.swf, que contiene el código compilado de la aplicación.
Nota: si la aplicación no se compila, corrija la sintaxis o los errores ortográficos. Los errores y los avisos se muestran en
la ventana de la consola utilizada para ejecutar el compilador amxmlc.
Para obtener más información, consulte “Compilación de archivos de origen MXML y ActionScript para AIR” en la
página 48.
Prueba de la aplicación
Para ejecutar y probar la aplicación desde la línea de comandos, utilice AIR Debug Launcher (ADL) para iniciar la
aplicación utilizando su archivo descriptor. (ADL se encuentra en el directorio bin del SDK de Flex.)
❖ Desde el símbolo del sistema, indique el siguiente comando:
adl HelloWorld-app.xml
La aplicación de AIR resultante presenta un aspecto similar al de esta ilustración (el fondo verde en el escritorio del
usuario):
Con el uso de las propiedades horizontalCenter y verrticalCenter del control Label, el texto se sitúa en el centro de
la ventana. Mueva o cambie el tamaño de la ventana tal y como lo haría en cualquier otra aplicación de escritorio.
Para obtener más información, consulte “Utilización de AIR Debug Launcher (ADL)” en la página 51.
Para garantizar la seguridad de la aplicación, todos los archivos de instalación de AIR se deben firmar digitalmente.
Por motivos de desarrollo, se pueden generar certificados básicos con firma automática con ADT u otra herramienta
de generación de certificados. También puede adquirir un certificado de firma de código comercial en una entidad
emisora de certificados. Si los usuarios instalan un archivo de AIR con firma automática, el editor se muestra como
“unknown” (desconocido) durante el proceso de instalación. Esto se debe a que el certificado con firma automática
sólo garantiza que el archivo de AIR no se ha modificado desde su creación original. No existe ningún método para
evitar que alguien firme automáticamente un archivo de AIR de enmascaramiento y lo presente como su aplicación.
Para los archivos de AIR distribuidos públicamente, se recomienda el uso de un certificado comercial verificable. Para
obtener información general sobre los problemas de seguridad en AIR, consulte Seguridad en AIR (para
desarrolladores de ActionScript) o Seguridad en AIR (para desarrolladores de HTML).
En este ejemplo se utiliza el número mínimo de atributos que se pueden establecer para un certificado. Se puede
utilizar cualquier valor para los parámetros en cursiva. El tipo de clave debe ser 1024-RSA o 2048-RSA
(consulte“Firma digital de archivos de AIR” en la página 96).
Prueba de la aplicación
1 Presione Ctrl + Intro o seleccione Control -> Probar película para probar la aplicación en Adobe AIR.
2 Para utilizar la función Depurar película, añada primero código ActionScript a la aplicación. Puede intentarlo
rápidamente añadiendo una sentencia trace como ésta:
trace("Running AIR application using Debug Movie");
3 Presione Ctrl + Mayús + Intro o seleccione Control -> Depurar película para ejecutar la aplicación con Depurar
película.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 37
Creación de la primera aplicación de AIR con Flash Professional
Empaquetado de la aplicación
1 Seleccione Archivo > Publicar.
2 Firme el paquete de Adobe AIR con un certificado digital existente o cree un certificado con firma automática
utilizando los siguientes pasos:
a Haga clic en el botón Crear... para abrir el cuadro de diálogo Crear certificado digital con firma automática.
b Rellene los campos Nombre del editor, Unidad de organización, Nombre de organización, Correo electrónico,
País, Contraseña y Confirmar contraseña.
c Especifique el tipo de certificado. La opción Tipo de certificado hace referencia al nivel de seguridad: 1024-RSA
utiliza una clave de 1.024 bits (menos segunda) y 2048-RSA utiliza una clave de 2048 bits (más segura).
d Guarde la información en un archivo de certificado en la opción Guardar como o haciendo clic en el botón
Examinar... para acceder a la ubicación de la carpeta. (Por ejemplo, C:/Temp/mycert.pfx). Cuando haya
terminado, haga clic en Aceptar.
e Flash regresa al cuadro de diálogo Firma digital. La ruta y el nombre de archivo del certificado con firma
automática creado aparece ahora en el cuadro de texto Certificado. Si no es así, introduzca la ruta y el nombre
de archivo o haga clic en el botón Examinar para encontrarlo y seleccionarlo.
f Indique la misma contraseña en el campo de texto Contraseña del cuadro de diálogo Firma digital que la que se
asignó en el paso c. Para obtener más información sobre la firma de las aplicaciones de Adobe AIR, consulte
“Firma digital de archivos de AIR” en la página 96.
3 Para crear el archivo aplicación y el instalador, haga clic en el botón Publicar archivo. (En Flash CS4, haga clic en
el botón Aceptar.) Debe ejecutar los comandos Probar película o Depurar película para crear los archivos SWF y
application.xml antes de crear el archivo de AIR.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 38
Creación de la primera aplicación de AIR con Flash Professional
4 Para instalar la aplicación, haga doble clic en el archivo de AIR (application.air) en la misma carpeta en la que
guardó la aplicación.
5 Haga clic en el botón Instalar del cuadro de diálogo Instalación de la aplicación.
6 Revise los parámetros de Preferencias de instalación y Ubicación y asegúrese de que la casilla de verificación ‘Iniciar
aplicación tras la instalación’ está seleccionada. A continuación, haga clic en Continuar.
7 Haga clic en Finalizar cuando aparezca el mensaje Instalación completada.
Última modificación 1/5/2010 39
Para obtener más información sobre todas las opciones del cuadro de diálogo y cómo modificarlas, consulte
Creación de una aplicación de AIR en Dreamweaver.
9 Haga clic en el botón Crear archivo de AIR.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 41
Creación de la primera aplicación de AIR basada en HTML con Dreamweaver
Dreamweaver crea el archivo de la aplicación de Adobe AIR y lo guarda en la carpeta raíz del sitio. Dreamweaver
también crea un archivo application.xml y lo guarda en el mismo lugar. Este archivo sirve como manifiesto y define
distintas propiedades de la aplicación.
<application>
<id>…</id>
<version>…</version>
<filename>…</filename>
<initialWindow>
<content>…</content>
<visible>…</visible>
<width>…</width>
<height>…</height>
</initialWindow>
</application>
En este ejemplo sólo se establecen unas cuantas de las posibles propiedades de la aplicación. Para obtener el conjunto
completo de las propiedades de la aplicación, que permiten especificar determinados aspectos, como el tamaño y el
fondo cromático de la ventana, la transparencia, el directorio de instalación predeterminado, los tipos de archivo
asociados y los iconos de la aplicación, consulte “Configuración de las propiedades de una aplicación de AIR” en la
página 71.
AIR define una propiedad denominada runtime en el objeto de la ventana HTML. La propiedad runtime
proporciona acceso a las clases incorporadas de AIR, utilizando el nombre completo del paquete de la clase. Por
ejemplo, para crear un objeto File de AIR se puede añadir la siguiente sentencia en JavaScript:
var textFile = new runtime.flash.filesystem.File("app:/textfile.txt");
El archivo AIRAliases.js define los alias convenientes para las API de AIR más útiles. Con AIRAliases.js se
puede reducir la referencia a la clase File del siguiente modo:
var textFile = new air.File("app:/textfile.txt");
3 Bajo la etiqueta de script AIRAliases, añada otra etiqueta de script que contenga una función JavaScript para
administrar el evento onLoad:
<script type="text/javascript">
function appLoad(){
air.trace("Hello World");
}
</script>
<html>
<head>
<title>Hello World</title>
<script type="text/javascript" src="AIRAliases.js"></script>
<script type="text/javascript">
function appLoad(){
air.trace("Hello World");
}
</script>
</head>
<body onLoad="appLoad()">
<h1>Hello World</h1>
</body>
</html>
Prueba de la aplicación
Para ejecutar y probar la aplicación desde la línea de comandos, emplee la utilidad AIR Debug Launcher (ADL). El
ejecutable ADL se encuentra en el directorio bin del SDK de AIR. Si aún no ha configurado el SDK de AIR, consulte
“Instalación del SDK de AIR” en la página 21.
1 Abra una consola de comandos o de shell. Cambie al directorio creado para este proyecto.
2 ejecute el siguiente comando:
adl HelloWorld-app.xml
Se abrirá una ventana de AIR, mostrando la aplicación. Asimismo, la ventana de la consola muestra el mensaje
resultante de la llamada a air.trace().
Para obtener más información, consulte “Configuración de las propiedades de una aplicación de AIR” en la
página 71.
ADT genera un archivo de almacén de claves denominado sampleCert.pfx que contiene un certificado y la clave
privada relacionada.
En este ejemplo se utiliza el número mínimo de atributos que se pueden establecer para un certificado. Se puede
utilizar cualquier valor para los parámetros en cursiva. El tipo de clave debe ser 1024-RSA o 2048-RSA
(consulte“Firma digital de archivos de AIR” en la página 96).
Pasos siguientes
En AIR, el código HTML y JavaScript se suele comportar tal y como lo haría en un navegador web típico. (De hecho,
AIR utiliza el mismo motor de representación WebKit que se emplea en el navegador web Safari.) Sin embargo, existen
algunas diferencias importantes que se deben conocer a la hora de desarrollar aplicaciones HTML en AIR. Para
obtener más información sobre estas diferencias y otros temas importantes, consulte Programming HTML and
JavaScript (Programación con HTML y JavaScript; en inglés).
Última modificación 1/5/2010 47
siendo [compiler options] las opciones de la línea de comandos que se utilizan para compilar la aplicación de AIR.
El comando amxmlc invoca al compilador de Flex estándar mxmlc con un parámetro adicional, +configname=air.
Este parámetro indica al compilador que utilice el archivo air-config.xml en lugar de flex-config.xml. Por lo demás, el
uso de amxmlc es idéntico al uso de mxmlc. El compilador mxmlc y el formato del archivo de configuración se
describen en Creación e implementación de aplicaciones de Flex 3 (en inglés) en la biblioteca de documentación de
Flex 3.
El compilador carga el archivo de configuración air-config.xml especificando las bibliotecas de AIR y Flex que se
suelen necesitar al compilar una aplicación de AIR. También se puede utilizar un archivo de configuración local a nivel
de proyecto para suprimir o añadir opciones adicionales a la configuración global. En general la forma más fácil de
crear un archivo de configuración local es mediante modificación de una copia de la versión global. El archivo local
puede cargarse con la opción -load-config:
-load-config=project-config.xml Suprime las opciones globales.
-load-config+=project-config.xml Añade valores adicionales a las opciones globales que aceptan más de un valor,
como la opción -library-path. Las opciones globales que tienen un solo valor se suprimen.
Si se utiliza una convención particular para el nombre del archivo de configuración local, el compilador amxmlc carga
el archivo local automáticamente. Por ejemplo, si el archivo MXML principal es RunningMan.mxml, el nombre del
archivo de configuración local es: RunningMan-config.xml. Para compilar la aplicación sólo hace falta escribir:
amxmlc RunningMan.mxml
RunningMan-config.xml se carga automáticamente, dado que su nombre de archivo coincide con el del archivo
MXML compilado.
Añada bibliotecas en la línea de comandos (además de las bibliotecas que ya figuran en el archivo de configuración):
amxmlc –library-path+=/libs/libOne.swc,/libs/libTwo.swc -- myApp.mxml
Compile un archivo MXML de AIR sin usar archivo de configuración (Mac OS X o Linux):
mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, \
[AIR SDK]/frameworks/libs/air/airframework.swc, \
-library-path [Flex 3 SDK]/frameworks/libs/framework.swc \
-- myApp.mxml
Compile un archivo MXML de AIR para utilizar una biblioteca compartida con el motor de ejecución:
amxmlc -external-library-path+=../lib/myLib.swc -runtime-shared-libraries=myrsl.swf --
myApp.mxml
Compilando desde Java (con la ruta de clase definida para que incluya mxmlc.jar):
java flex2.tools.Compiler +flexlib [Flex SDK 3]/frameworks +configname=air [additional
compiler options] -- myApp.mxml
La opción flexlib identifica la ubicación del directorio frameworks del SDK de Flex, lo cual permite al compilador
localizar el archivo flex_config.xml.
Compilando desde Java (sin ruta de clase definida):
java -jar [Flex SDK 2]/lib/mxmlc.jar +flexlib [Flex SDK 3]/frameworks +configname=air
[additional compiler options] -- myApp.mxml
Para invocar el compilador utilizando Apache Ant (en el ejemplo se utiliza una tarea de Java para ejecutar mxmlc.jar):
<property name="SDK_HOME" value="C:/Flex3SDK"/>
<property name="MAIN_SOURCE_FILE" value="src/myApp.mxml"/>
<property name="DEBUG" value="true"/>
<target name="compile">
<java jar="${MXMLC.JAR}" fork="true" failonerror="true">
<arg value="-debug=${DEBUG}"/>
<arg value="+flexlib=${SDK_HOME}/frameworks"/>
<arg value="+configname=air"/>
<arg value="-file-specs=${MAIN_SOURCE_FILE}"/>
</java>
</target>
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 50
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
<flex-config>
<compiler>
<source-path>
<path-element>source</path-element>
</source-path>
</compiler>
<include-classes>
<class>com.adobe.samples.particles.ParticleManager</class>
<class>com.adobe.samples.particles.Particle</class>
</include-classes>
</flex-config>
(Escriba todo el comando en una sola línea o utilice el carácter de continuación de línea para el shell de comandos).
(Obsérvese que la carpeta lib debe existir y estar vacía antes de ejecutar el comando).
-runtime runtime-directory Especifica el directorio que contiene el motor de ejecución a utilizar. Si no se especifica,
se utiliza el directorio del motor de ejecución del mismo SDK que el programa ADL. Si ADL se mueve fuera su carpeta
en SDK, especifique el directorio del motor de ejecución. En Windows y Linux, especifique el directorio que contiene
el directorio Adobe AIR. En Mac OS X, especifique el directorio que contiene Adobe AIR.framework.
-pubid publisher-id Asigna el valor especificado como ID del editor de la aplicación de AIR para esta ejecución. La
especificación de un ID de editor temporal permite ensayar las funciones de una aplicación de AIR, como la
comunicación a través de una conexión local, que utilizan el ID del editor para ayudar a identificar una aplicación con
exclusividad. A partir de AIR 1.5.3, también se puede especificar el ID de editor en el archivo descriptor de la aplicación
(y no se debe utilizar este parámetro).
Nota: a partir de AIR 1.5.3, un ID de editor no se vuelve a calcular ni a asignar automáticamente a una aplicación de
AIR. Se puede especificar un ID de editor al crear una actualización en una aplicación de AIR existente, pero las nuevas
aplicaciones no necesitan ni deben especificar un ID de editor.
-nodebug Desactiva la compatibilidad con la depuración. Si se utiliza, el proceso de la aplicación no podrá conectar
con el depurador de Flash y se suprimen los cuadros de diálogo para excepciones no controladas. (Sin embargo, las
sentencias trace continúan imprimiéndose en la ventana de la consola.) Si desactivamos la depuración, el
funcionamiento de la aplicación se agilizará y el modo de ejecución será más similar al de una aplicación instalada.
-profile profileName ADL depura la aplicación utilizando el perfil especificado. profileName puede ser desktop,
extendedDesktop, mobileDevice y extendedMobileDevice. Para obtener más información, consulte “Limitación
de los perfiles de la aplicación de destino” en la página 77 y “Perfiles de la aplicación” en la página 83.
application.xml Archivo descriptor de la aplicación. Consulte “Configuración de las propiedades de una aplicación
de AIR” en la página 71. El descriptor de la aplicación es el único parámetro que requiere ADL y, en la mayoría de los
casos, el único parámetro necesario.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 52
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
root-directory Especifica el directorio raíz de la aplicación a ejecutar. Si no se especifica, se utilizará el directorio que
contiene el archivo descriptor de la aplicación.
-- arguments Las cadenas de caracteres que aparezcan después de "--" se pasan a la aplicación como argumentos de la
línea de comandos.
Nota: cuando se intenta iniciar una aplicación de AIR que ya está ejecutándose, no se inicia una nueva instancia de la
aplicación, sino que se distribuye un evento invoke a la instancia que está en ejecución.
Ejemplo de ActionScript:
//JavaScript
air.trace("debug message");
En el código JavaScript se pueden utilizar las funciones alert() y confirm() para mostrar los mensajes de
depuración de la aplicación. Además, los números de línea para los errores de sintaxis, así como las excepciones de
JavaScript sin capturar se imprimen en la consola.
Nota: para utilizar el prefijo air que muestra en el ejemplo de JavaScript, debe importar el archivo AIRAliases.js en la
página. El archivo se ubica en el directorio frameworks del SDK de AIR.
Ejecute una aplicación y transmita dos argumentos de la línea de comandos, "tick" y "tock":
adl myApp-app.xml -- tick tock
<target name="test">
<exec executable="${ADL}">
<arg value="${APP_DESCRIPTOR}"/>
</exec>
</target>
4 Utilice comandos de FDB para definir los puntos de corte según proceda.
5 Escriba:: continue [Intro]
Si una aplicación de AIR se basa en SWF, el depurador sólo controla la ejecución de código ActionScript. Si la
aplicación de AIR se basa en HTML, el depurador sólo controla la ejecución de código JavaScript.
Para ejecutar ADL sin conexión con el depurador, incluya la opción -nodebug:
adl myApp.xml -nodebug
Para obtener información básica sobre los comandos de FDB, ejecute el comandohelp:
<fdb>help [Enter]
Para obtener información sobre los comandos de FDB, consulte Using the command-line debugger commands (Uso
de los comandos del depurador de la línea de comandos) en la documentación de Flex (en inglés).
Código de Descripción
salida
1 Invocación satisfactoria de una aplicación de AIR que ya está en ejecución. ADL se cierra
inmediatamente.
Código de Descripción
salida
4 No se puede iniciar el motor de ejecución. Esto se debe con frecuencia a que la versión o el nivel de
revisión que se especifica en la aplicación no coincide con la versión o el nivel de revisión del motor de
ejecución.
7 El contenido del descriptor de la aplicación no es válido. Este error suele indicar que el XML no está bien
conformado.
Cuando se utiliza un certificado con firma automática, los usuarios no pueden verificar su identidad como firmante.
Un certificado con firma automática también debilita la garantía de que el paquete no se haya modificado. (Esto se
debe a que un archivo de instalación de confianza se puede sustituir por una falsificación antes de que llegue al
usuario.) El cuadro de diálogo de instalación refleja que la identidad del editor no puede comprobarse. Los usuarios
están arriesgando más su seguridad cuando instalan la aplicación:
Cuadro de diálogo de confirmación de instalación firmado por un certificado con firma automática
Se puede empaquetar y firmar un archivo de AIR en un solo paso con el comando -package de ADT. También se
puede crear un paquete intermedio sin firmar con el comando -prepare, firmando después el paquete intermedio con
el comando -sign en un paso separado.
Nota: las versiones de Java 1.5 y posteriores no aceptan caracteres ASCII superior en contraseñas utilizadas para proteger
archivos de certificado PKCS12. Cuando se cree o se exporte el archivo de certificado de firma de código, utilice solamente
caracteres ASCII normales en la contraseña.
Al firmar el paquete de instalación, ADT se pone en contacto automáticamente con el servidor de una autoridad de
marcas de hora para verificar la hora. La marca de hora se incluye en el archivo de AIR. Un archivo de AIR que incluya
una marca de hora verificada podrá instalarse en el futuro en cualquier momento. Si ADT no puede conectarse al
servidor de marcas de hora, se cancela el empaquetado. La opción de marca de hora puede pasarse por alto, pero sin
marca de hora la aplicación de AIR ya no podrá instalarse una vez caducado el certificado que se utilizó para firmar el
archivo de instalación.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 56
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
Si se está creando un paquete para actualizar una aplicación de AIR existente, el paquete se debe firmar con el mismo
certificado que la aplicación original. Si el certificado original se ha renovado o ha caducado en los últimos 180 días, o
bien, si se desea cambiar a un nuevo certificado, se puede aplicar una firma de migración. La firma de migración
implica firmar el archivo de AIR de la aplicación tanto con el nuevo como con el antiguo certificado. Utilice el
comando -migrate para aplicar la firma de migración tal y como se describe en “Firma de un archivo de AIR para
cambiar el certificado de la aplicación” en la página 68.
Importante: existe un estricto período de gracia de 180 días para aplicar una firma de migración una vez caducado el
certificado original. Sin la firma de migración, los usuarios existentes deben desinstalar su aplicación existente antes de
instalar la nueva versión. El período de gracia de días sólo se aplica a las aplicaciones que especifican la versión de AIR
1.5.3, o superior, en el espacio de nombres del descriptor de la aplicación. No hay período de gracia cuando se utilizan
versiones anteriores del motor de ejecución de AIR.
Antes de AIR 1.1, no se admitían las firmas de migración. La aplicación se debe empaquetar con un SDK de versión
1.1 o posterior para aplicar una firma de migración.
Las aplicaciones implementadas utilizando archivos de AIR se denominan aplicaciones de perfil de escritorio. No es
posible utilizar ADT para empaquetar un instalador nativo para una aplicación de AIR si el archivo descriptor de la
aplicación no admite el perfil de escritorio. Este perfil se puede restringir utilizando el elemento supportedProfiles en
el archivo descriptor de la aplicación. Consulte “Limitación de los perfiles de la aplicación de destino” en la página 77.
Nota: los valores definidos en el archivo descriptor de la aplicación determinan la identidad de la aplicación de AIR y su
ruta de instalación predeterminada. Consulte “Estructura del archivo descriptor de la aplicación” en la página 71.
IDs de editor
A partir de AIR 1.5.3, los IDs de editor quedan desfasados. Las nuevas aplicaciones (publicadas en un principio con
AIR 1.5.3 o superior) no necesitan ni deben especificar un ID de editor.
Al actualizar las aplicaciones publicadas con versiones anteriores de AIR, se debe especificar el ID de editor original
en el archivo descriptor de la aplicación. De lo contrario, la versión instalada de la aplicación y la versión de
actualización se tratan como aplicaciones diferentes. Si se utiliza un ID distinto o se omite la etiqueta publisherID, un
usuario debe desinstalar la versión anterior antes de instalar la nueva.
Para determinar el ID de editor original, localice el archivo publisherid en el subdirectorio META-INF/AIR donde
se instaló la aplicación original. La cadena de este archivo es el ID de editor. El descriptor de la aplicación debe
especificar el motor de ejecución de AIR 1.5.3 (o posterior) en la declaración del espacio de nombres del archivo
descriptor de la aplicación con el fin de especificar el ID de editor manualmente.
Para las aplicaciones publicadas antes de AIR 1.5.3, o que se publican con el SDK de AIR 1.5.3, al especificar una
versión anterior de AIR en el espacio de nombres del descriptor de la aplicación, se calcula un ID de editor en función
del certificado de firma. Este ID se utiliza, junto con el ID de la aplicación, para determinar la identidad de una
aplicación. El ID de editor, cuando se encuentra presente, se emplea para lo siguiente:
• Comprobar que un archivo de AIR es una actualización en lugar de una nueva aplicación para instalar.
• Como parte de la clave de cifrado para el almacén local cifrado.
• Como parte de la ruta para el directorio de almacenamiento de la aplicación.
• Como parte de la cadena de conexión para conexiones locales.
• Como parte de la cadena de identidad utilizada para invocar una aplicación la API en navegador de AIR.
• Como parte de OSID (utilizado al crear programas personalizados de instalación y desinstalación).
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 57
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
Antes de AIR 1.5.3, el ID de editor de una aplicación podía cambiar si se firmaba una actualización de la aplicación
con una firma de migración utilizando un certificado nuevo o renovado. Cuando cambia un ID de editor, el
comportamiento de cualquier función de AIR basada en el ID también cambia. Por ejemplo, ya no se puede acceder a
los datos del almacén local cifrado existente y cualquier instancia de Flash o AIR que cree una conexión local con la
aplicación debe utilizar el nuevo ID en la cadena de conexión.
En AIR 1.5.3 o posterior, el ID de editor no se basa en el certificado de firma y sólo se asigna si la etiqueta publisherID
se incluye en el descriptor de la aplicación. Una aplicación no puede actualizarse si el ID de editor especificado para el
paquete de AIR de actualización no coincide con su ID de editor actual.
SIGNING_OPTIONS Las opciones de firma identifican al almacén de claves que contiene la clave privada y el
certificado que se utilizaron para firmar el archivo de AIR. Para firmar una aplicación de AIR con un certificado
con firma automática generado por ADT, las opciones a utilizar son:
-storetype pkcs12 -keystore certificate.p12
En este ejemplo, certificate.p12 es el nombre del archivo del almacén de claves. (ADT le solicita la contraseña, dado
que no se indica en la línea de comandos). Las opciones de firma se describen con detenimiento en “Opciones de
firma en la línea de comandos de ADT” en la página 63.
air_file El nombre del archivo de AIR que se va a crear.
app_xml La ruta al archivo descriptor de la aplicación. La ruta se puede indicar en relación con el directorio actual
o como ruta absoluta. (En el archivo de AIR el archivo descriptor de la aplicación cambia de nombre a
“application.xml”).
file_or_dir Los archivos y directorios a empaquetar en el archivo de AIR. Se puede especificar la cantidad de
archivos y directorios que se desee, delimitados por un espacio en blanco. Si se incluye un directorio en la lista, se
añaden al paquete todos los archivos y subdirectorios que contenga, excepto los archivos ocultos. (Si se especifica
el archivo descriptor de la aplicación, sea directamente o mediante el uso de un comodín o por expansión de un
directorio, éste se pasa por alto y no se añade al paquete por segunda vez). Los archivos y directorios especificados
deben estar incluidos en el directorio actual o en uno de sus subdirectorios. Para cambiar el directorio actual, utilice
la opción -C.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 58
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
Importante: no se pueden utilizar comodines en los argumentos file_or_dir después de la opción –C. (Los shells de
comandos expanden los comodines antes de pasar los argumentos a ADT, por lo que ADT buscaría los archivos en el
lugar equivocado). Sí se puede utilizar el punto (".") para representar el directorio actual. Por ejemplo: "-C assets
." copia todo el contenido del directorio assets, incluidos los subdirectorios, hasta el nivel raíz del paquete de la
aplicación.
-C dir Cambia el directorio de trabajo al valor dir antes de procesar los archivos y directorios posteriores que se
añadan al paquete de la aplicación. Los archivos o directorios se añaden a la raíz del paquete de la aplicación. La
opción –C se puede utilizar todas las veces que se desee para incluir archivos desde varios lugares del sistema de
archivos. Si se especifica una ruta relativa para dir, la ruta siempre se resuelve desde el directorio de trabajo
original.
A medida que ADT procesa los archivos y directorios incluidos en el paquete, se van guardando las rutas relativas
entre el directorio actual y los archivos de destino. Estas rutas se expanded en la estructura de directorios de la
aplicación cuando se instala el paquete. Por lo tanto, si se especifica -C release/bin lib/feature.swf, el
archivo release/bin/lib/feature.swf se coloca en el subdirectorio lib de la carpeta raíz de la aplicación.
-e file dir Coloca el archivo especificado en el directorio especificado del paquete.
Nota: el elemento <content> del archivo descriptor de la aplicación debe especificar la ubicación final del archivo
principal de la aplicación dentro del árbol de directorios del paquete de la aplicación.
También se puede empaquetar y distribuir una aplicación de AIR utilizando un instalador nativo (por ejemplo, un
archivo EXE en Windows o un archivo DMG en Mac OS). Para obtener más información, consulte “Empaquetado
de una aplicación de AIR en un instalador nativo” en la página 65.
Empaquete los archivos de la aplicación específicos en el directorio actual para una aplicación de AIR basada en HTML:
adt –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.html AIRAliases.js
image.gif
Nota: el archivo del almacén de claves contiene la clave privada que se utilizó para firmar la aplicación. No incluya nunca
el certificado de firma en el paquete de AIR. Si utiliza comodines en el comando ADT, coloque el archivo del almacén de
claves en otra carpeta para que no se incluya en el paquete. En este ejemplo el archivo del almacén de claves, cert.p12,
reside en el directorio principal.
Empaquete solamente los principales archivos y un subdirectorio de imágenes:
adt –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.swf images
Empaquete una aplicación basada en HTML y todos los archivos de los subdirectorios HTML, scripts e images:
adt –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml index.html AIRALiases.js
html scripts images
Empaquete el archivo application.xml y el archivo SWF principal que se encuentran en un directorio de trabajo
(release/bin):
adt –package -storetype pkcs12 -keystore cert.p12 myApp.air release/bin/myApp.xml –C
release/bin myApp.swf
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 59
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
Empaquete componentes procedentes de más de un lugar en el sistema de archivos de construcción. En este ejemplo,
los componentes de la aplicación se encuentran en las siguientes carpetas antes de que se empaquetan:
/devRoot
/myApp
/release
/bin
myApp.xml
myApp.swf or myApp.html
/artwork
/myApp
/images
image-1.png
...
image-n.png
/libraries
/release
/libs
lib-1.swf
lib-2.swf
lib-a.js
AIRAliases.js
Ejecute ADT como programa Java para una aplicación sencilla basada en SWF (sin establecer la ruta de clase):
java –jar {AIRSDK}/lib/ADT.jar –package -storetype pkcs12 -keystore cert.p12 myApp.air
myApp.xml myApp.swf
Ejecute ADT como programa Java para una aplicación sencilla basada en HTML (sin establecer la ruta de clase):
java –jar {AIRSDK}/lib/ADT.jar –package -storetype pkcs12 -keystore cert.p12 myApp.air
myApp.xml myApp.html AIRAliases.js
Ejecute ADT como programa de Java (con la ruta de clase de Java definida para incluir el paquete ADT.jar):
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 60
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
target name="package">
<java jar="${ADT.JAR}" fork="true" failonerror="true">
<arg value="-package"/>
<arg value="-storetype"/>
<arg value="pkcs12"/>
<arg value="-keystore"/>
<arg value="../../ExampleCert.p12"/>
<arg value="myApp.air"/>
<arg value="myApp.xml"/>
<arg value="myApp.xml"/>
<arg value="icons/*.png"/>
</java>
</target>
Consulte “Configuración de las propiedades de una aplicación de AIR” en la página 71 para obtener información sobre
los espacios de nombres, elementos, atributos y sus valores válidos.
Errores de icono de la aplicación
200 El archivo de icono se puede abrir. Compruebe que el archivo existe en la ruta
especificada.
201 El tamaño del icono no es correcto. El tamaño del icono (en píxeles) debe
coincidir con la etiqueta XML. Por ejemplo,
con el siguiente elemento descriptor de la
aplicación:
<image32x32>icon.png</image32x3
2>
202 El archivo de icono contiene un formato de Sólo se admite el formato PNG. Convierta
imagen no compatible. imágenes en otros formatos antes de
empaquetar la aplicación.
302 Falta el archivo de contenido raíz en un El archivo SWF o HTML al que se hace
paquete. referencia en el elemento <content> del
descriptor de la aplicación se debe añadir al
paquete agregándolo a los archivos que se
incluyen en la línea de comandos de ADT.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 62
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
305 La versión de SWF del contenido de La versión de SWF del archivo al que se
ventana inicial sobrepasa la versión del hace referencia en el elemento <content>
espacio de nombres. del descriptor de la aplicación no se admite
en la versión de AIR especificada en el
espacio de nombres del descriptor. Por
ejemplo, si se intenta empaquetar un
archivo SWF10 (Flash Player 10) como
contenido inicial de una aplicación de AIR
1.1, se generará este error.
-alias aliasName : alias de una clave en el almacén de claves. No es necesario especificar un alias si el almacén de
claves contiene un solo certificado. Si no se especifica ningún alias, ADT utiliza la primera clave del almacén de
claves.
No todas las aplicaciones con administración del almacén de claves permiten que se asigne un alias a los
certificados. Si hace uso del almacén de claves del sistema en Windows, por ejemplo, utilice como alias el nombre
distinguido del certificado. Se puede utilizar la utilidad Java Keytool para enumerar los certificados disponibles para
poder determinar el alias. Por ejemplo, si se ejecuta el comando:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 64
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
Para hacer referencia a este certificado en la línea de comandos de ADT, defina el alias en:
CN=TestingCert,OU=QE,O=Adobe,C=US
En Mac OS X, el alias de un certificado en la Llave es el nombre que se muestra en la aplicación Acceso a Llaveros.
-storetype type : tipo de almacén de claves, determinado por la implementación del almacén de claves. La
implementación del almacén de claves predeterminada incluida con la mayoría de las instalaciones de Java es
compatible con los tipos JKS y PKCS12. Java 5.0 ofrece compatibilidad con el tipo PKCS11, para acceder a almacenes
de claves en tokens de hardware, y al tipo Keychain, para acceder a la Llave de Mac OS X. Java 6.0 ofrece
compatibilidad con el tipo MSCAPI (en Windows). Si se han instalado y configurado otros proveedores de JCA,
puede que se disponga además de otros tipos de almacenes de claves. Si no se especifica ningún tipo de almacén de
claves, se utiliza el tipo predeterminado para el proveedor de JCA predeterminado.
-keystore path: ruta al archivo del almacén de claves para tipos de almacén basados en archivo.
-storepass password1: contraseña para acceder al almacén de claves. Si no se especifica, ADT la solicita.
-keypass password2: contraseña para acceder a la clave privada que se utiliza para firmar la aplicación de AIR. Si
no se especifica, ADT la solicita.
-providerName className: proveedor de JCA para el tipo de almacén de claves especificado. Si no se especifica,
ADT utiliza el proveedor predeterminado para ese tipo de almacén de claves.
-tsa url: especifica la URL de un RFC3161 (en inglés) para marcar la hora en la firma digital. Si no se especifica una
URL, se utiliza un servidor de marcas de hora predeterminado suministrado por Geotrust. Cuando la firma de una
aplicación de AIR lleva una marca de hora, la aplicación puede instalarse después de caducado el certificado de
firma porque la marca de hora verifica que el certificado era válido al momento de firmar.
Si ADT no puede conectarse al servidor de marcas de hora, se cancela la firma y no se produce ningún paquete. La
marca de hora se puede desactivar especificando -tsa none. Sin embargo, una aplicación de AIR empaquetada sin
marca de hora no se puede instalar una vez caducado el certificado de firma.
Nota: las opciones de firma son como las opciones equivalentes de la utilidad Keytool de Java. La utilidad Keytool
sirve para examinar y administrar almacenes de claves en Windows. La utilidad de seguridad de Apple® sirve para lo
mismo en Mac OS X.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 65
Creación de aplicaciones de AIR con las herramientas de la línea de comandos
Firma con un token de hardware (consulte las instrucciones del fabricante del token para ver cómo se configura Java
para utilizar el token y para obtener el valor correcto de providerName):
-alias AIRCert -storetype pkcs11 -providerName tokenProviderName
• Communicating with native processes in AIR (Comunicación con procesos nativos en AIR; en inglés) (Para
desarrolladores HTML)
• Puede llamar al método File.openWithDefaultApplication() en cualquier archivo con la aplicación del
sistema predeterminada definida para abrirlo, independientemente de su tipo de archivo. (Existen limitaciones en
las aplicaciones que no están instaladas con un instalador nativo. Para obtener más información, consulte la entrada
para File.openWithDefaultApplication() en la referencia del lenguaje.)
Si el usuario hace doble clic en el archivo de instalación nativo, se instalará la aplicación de AIR. Si la versión necesaria
de Adobe AIR aún no está instalada en el equipo, el instalador la descarga de la red y la instala en primer lugar. Si no
hay conexión de red con la que obtener la versión correcta de Adobe AIR (si es necesaria), se produce un error de
instalación. Asimismo, la instalación falla si el sistema operativo no se admite en Adobe AIR 2.
Nota: si desea que un archivo sea ejecutable en su aplicación instalada, asegúrese de que lo es en el sistema de archivos
en el momento de empaquetar la aplicación. (En Mac y Linux, puede utilizar chmod para establecer el indicador de
ejecutable, si es necesario.)
Esta sintaxis es similar a la sintaxis para empaquetar un archivo de AIR (sin un instalador nativo). Sin embargo, existen
algunas diferencias:
• La opción -target native se añade al comando. (Si se especifica -target air, ADT genera un archivo de AIR
en lugar de un archivo de instalación nativo.)
• El archivo DMG o EXE de destino se especifica como installer_file.
• De forma opcional, en Windows es posible añadir un segundo conjunto de opciones de firma, indicado como
[WINDOWS_INSTALLER_SIGNING_OPTIONS] en el listado de sintaxis. En Windows, además de firmar un archivo de
AIR, se puede firmar el archivo de Windows Installer. Utilice el mismo tipo de certificado y sintaxis de opción de
firma que se usaría para firmar el archivo de AIR (consulte “Opciones de firma en la línea de comandos de ADT”
en la página 63). Se puede emplear el mismo certificado para firmar el archivo de AIR y el archivo de instalación, o
bien, se pueden especificar certificados diferentes. Cuando un usuario descarga un archivo firmado de Windows
Installer de la web, Windows identifica el origen del archivo, en función del certificado.
Para obtener más información sobre las opciones de ADT distintas a la opción -target, consulte “Empaquetado de
archivos de instalación de AIR” en la página 54.
En el siguiente ejemplo se crea un archivo DMG (un archivo de instalación nativo para Mac OS):
adt -package -storetype pkcs12 -keystore myCert.pfx -target native myApp.dmg application.xml
index.html resources
En el siguiente ejemplo se crea un archivo EXE (un archivo de instalación nativo para Windows):
adt -package -storetype pkcs12 -keystore myCert.pfx -target native myApp.exe application.xml
index.html resources
Esta sintaxis es similar a la que se utiliza para crear un instalador nativo basado en los archivos de origen para la
aplicación de AIR. Sin embargo, existen unas cuantas diferencias:
• Como origen, se especifica un archivo de AIR, en lugar de un archivo descriptor de la aplicación y otros archivos
de origen para la aplicación de AIR.
• No especifique opciones de firma para el archivo de AIR, ya que ya está firmado.
Para crear un instalador nativo basado en un archivo de AIRI, utilice el comando -package de ADT con la siguiente
sintaxis (en una sola línea de comandos):
adt AIR_SIGNING_OPTIONS -package -target native [WINDOWS_INSTALLER_SIGNING_OPTIONS]
installer_file airi_file
Esta sintaxis es similar a la que se emplea para crear un instalador nativo basado en un archivo de AIR. Sin embargo,
existen unas cuantas diferencias:
• Como origen, se especifica un archivo de AIRI.
• Se especifican opciones de firma para la aplicación de AIR de destino.
En el siguiente ejemplo se crea un archivo DMG (un archivo de instalación nativo para Mac OS) basado en un archivo
de AIR:
adt -package -target native myApp.dmg myApp.air
En el siguiente ejemplo se crea un archivo EXE (un archivo de instalación nativo para Windows) basado en un archivo
de AIR:
adt -package -target native myApp.exe myApp.air
En el siguiente ejemplo se crea un archivo DMG (un archivo de instalación nativo para Mac OS) basado en un archivo
de AIRI:
adt -storetype pkcs12 -keystore myCert.pfx -packag e-target native myApp.dmg myApp.airi
En el siguiente ejemplo se crea un archivo EXE (un archivo de instalación nativo para Windows) basado en un archivo
de AIRI:
adt -storetype pkcs12 -keystore myCert.pfx -package -target native myApp.exe myApp.airi
El comando -prepare acepta los mismos indicadores y parámetros que el comando -package (a excepción de las
opciones de firma). La única diferencia es que no se firma el archivo de salida. El archivo intermedio se genera con la
extensión del nombre de archivo airi.
Para firmar un archivo intermedio de AIR, utilice el comando -sign de ADT. (Consulte “Firma de un archivo
intermedio de AIR con ADT” en la página 68).
SIGNING_OPTIONS Las opciones de firma identifican la clave privada y el certificado con que se firma el archivo
de AIR. Estas opciones se describen en “Opciones de firma en la línea de comandos de ADT” en la página 63.
airi_file La ruta al archivo intermedio sin firmar de AIR que se va a firmar.
air_file El nombre del archivo de AIR que se va a crear.
Para obtener más información, consulte “Firma digital de archivos de AIR” en la página 96.
SIGNING_OPTIONS Las opciones de firma identifican la clave privada y el certificado con que se firma el archivo
de AIR. Estas opciones deben identificar el certificado de firma original y se describen en “Opciones de firma en la
línea de comandos de ADT” en la página 63
air_file_in El archivo de AIR para la actualización, firmado con el certificado nuevo.
air_file_out El archivo de AIR que se va a crear.
Para obtener más información, consulte “Firma digital de archivos de AIR” en la página 96.
Nota: el comando -migrate se añadió a ADT en la versión 1.1 de AIR.
El certificado y la clave privada asociada generados por ADT se guardan en un archivo de almacén de claves del tipo
PKCS12. La contraseña especificada se establece en la propia clave y no en el almacén de claves.
-cn name La cadena asignada como nombre común del nuevo certificado.
-ou org_unit Una cadena asignada como unidad organizativa emisora del certificado. (Opcional.)
-o org_name Una cadena asignada como organización emisora del certificado. (Opcional.)
-c country Código de país de dos letras de la norma ISO-3166. Si el código suministrado no es válido, no se genera
el certificado. (Opcional.)
key_type El tipo de clave que se va a utilizar para el certificado, que puede ser “1024-RSA” o “2048-RSA”.
Cuando se utilizan estos certificados para firmar archivos de AIR, hay que usar las siguientes opciones de firma con
los comandos -package o -prepare de ADT:
-storetype pkcs12 -keystore newcert.p12 -keypass 39#wnetx3tl
-storetype pkcs12 -keystore SigningCert.p12 -keypass 39#wnetx3tl
Nota: las versiones de Java 1.5 y posteriores no aceptan caracteres ASCII superior en contraseñas utilizadas para proteger
archivos de certificado PKCS12. Utilice únicamente caracteres ASCII normales en la contraseña.
Última modificación 1/5/2010 71
<maximizable>false</maximizable>
<resizable>false</resizable>
<width>640</width>
<height>480</height>
<minSize>320 240</minSize>
<maxSize>1280 960</maxSize>
</initialWindow>
<installFolder>Example Co/Hello World</installFolder>
<programMenuFolder>Example Co</programMenuFolder>
<icon>
<image16x16>icons/smallIcon.png</image16x16>
<image32x32>icons/mediumIcon.png</image32x32>
<image48x48>icons/bigIcon.png</image48x48>
<image128x128>icons/biggestIcon.png</image128x128>
</icon>
<customUpdateUI>true</customUpdateUI>
<allowBrowserInvocation>false</allowBrowserInvocation>
<fileTypes>
<fileType>
<name>adobe.VideoFile</name>
<extension>avf</extension>
<description>Adobe Video File</description>
<contentType>application/vnd.adobe.video-file</contentType>
<icon>
<image16x16>icons/avfIcon_16.png</image16x16>
<image32x32>icons/avfIcon_32.png</image32x32>
<image48x48>icons/avfIcon_48.png</image48x48>
<image128x128>icons/avfIcon_128.png</image128x128>
</icon>
</fileType>
</fileTypes>
</application>
Si la aplicación utiliza un archivo HTML como su contenido raíz en lugar de un archivo SWF, únicamente el elemento
<content> es diferente:
<content>
HelloWorld.html
</content>
xmlns El espacio de nombre de AIR, el cual debe definirse como espacio de nombre XML predeterminado. El espacio
de nombre cambia con cada edición principal de AIR (pero no con las revisiones menores). El último segmento del
espacio de nombre, por ejemplo “2.0”, indica la versión del motor de ejecución que requiere la aplicación. Asegúrese
de establecer el espacio de nombres en AIR 2 ("http://ns.adobe.com/air/application/2.0") si su aplicación
utiliza alguna nueva función de AIR 2.
Para las aplicaciones basadas en SWF, la versión del motor de ejecución de AIR especificada en el descriptor de la
aplicación determina la versión de SWF máxima que se puede cargar como contenido inicial de la aplicación. Las
aplicaciones que especifican AIR 1.0 ó 1.1 sólo pueden utilizar archivos SWF9 (Flash Player 9) como contenido inicial,
aunque se ejecuten utilizando el motor de ejecución de AIR 2. Las aplicaciones que especifican AIR 1.5 (o posterior)
pueden usar archivos SWF9 o SWF10 (Flash Player 10) como contenido inicial.
La versión de SWF determina qué versión de las API de AIR y Flash Player están disponibles. Si un archivo SWF9 se
utiliza como contenido inicial de una aplicación de AIR 1.5, esa aplicación sólo tendrá acceso a las API de AIR 1.1 y
Flash Player 9. Asimismo, no se aplicarán los cambios de comportamiento realizados en las API existentes en AIR 2.0
o Flash Player 10.1. (Los cambios importantes relacionados con la seguridad en las API constituyen una excepción en
este principio y se pueden aplicar de forma retroactiva en revisiones actuales o posteriores del motor de ejecución.)
Para las aplicaciones basadas en HTML, la versión del motor de ejecución especificada en el descriptor de la aplicación
determina qué versión de las API de AIR y Flash Player están disponibles en la aplicación. Los comportamientos de
HTML, CSS y JavaScript siempre están determinados por la versión del Webkit utilizado en el motor de ejecución de
AIR instalado, y no por el descriptor de la aplicación.
Si una aplicación de AIR carga contenido SWF, la versión de las API de AIR y Flash Player disponible para dicho
contenido depende del modo en que se cargue el contenido. En ocasiones la versión eficaz se determina mediante el
espacio de nombres del descriptor de la aplicación, otras veces mediante la versión del contenido de carga y a veces
mediante la versión del contenido cargado. La siguiente tabla muestra cómo la versión de la API está determinada
según el método de carga:
Contenido inicial, aplicación basada en SWF Versión SWF del archivo cargado
Contenido inicial, aplicación basada en HTML Espacio de nombres del descriptor de la aplicación
Biblioteca SWF cargada mediante contenido Espacio de nombres del descriptor de la aplicación
HTML utilizando la etiqueta <script>
SWF cargado mediante contenido HTML Espacio de nombres del descriptor de la aplicación
utilizando las API de AIR o Flash Player (por
ejemplo, flash.display.Loader)
SWF cargado mediante contenido HTML Versión SWF del archivo cargado
utilizando etiquetas <object> o <embed> (o las
API equivalentes de JavaScript)
Al cargar un archivo SWF de una versión distinta al contenido de carga, puede encontrarse con los siguientes
problemas:
• Carga de contenido SWF10 mediante SWF9 (o anterior): las referencias a las API de AIR 1.5 y Flash Player 10 en
el contenido cargado no se resolverán.
• Carga de contenido SWF9 (o anterior) mediante SWF10: las API modificadas en AIR 1.5 y Flash Player 10 pueden
comportarse de un modo inesperado para el contenido cargado.
id Cadena de identificación de la aplicación, denominada ID de la aplicación. El valor del atributo se limita a los
siguientes caracteres:
• 0–9
• a–z
• A–Z
• . (punto)
• - (guión)
El valor debe contener entre 1 y 212 caracteres. Este elemento es obligatorio.
publisherID (Opcional) Se utiliza al actualizar una aplicación de AIR de la versión 1.5.2 o anterior a AIR 1.5.3 o
posterior. Este elemento contiene el ID de editor de la versión anterior de la aplicación de AIR. Especifique este
elemento sólo si está desarrollando una aplicación para AIR 1.5.3 o posterior y existe una versión de la aplicación que
utilice AIR 1.5.2 o anterior. Para obtener más información, consulte “Identificador del editor de AIR” en la página 98.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 75
Configuración de las propiedades de una aplicación de AIR
Si está desarrollando una aplicación de AIR para AIR 1.5.3 o posterior y existe una versión que utilice AIR 1.5.2 o
anterior:
1 Determine el ID de editor actual de la aplicación. En una aplicación instalada, el ID de editor se encuentra en el
archivo META-INF/AIR/publisherid.
2 Añada el ID de editor al elemento <publisherID> del archivo descriptor de la aplicación para su nueva aplicación.
version Especifica la información sobre la versión para la aplicación. (No tiene nada que ver con la versión del motor
de ejecución). La cadena de la versión es un designador definido por la aplicación. AIR no interpreta la cadena de
versión de ningún modo. Por ejemplo, no supone que la versión “3.0” es más actualizada que la versión “2.0”.
Ejemplos: "1.0", ".4", "0.5", "4.9", "1.3.4a". Este elemento es obligatorio.
filename La cadena que se deberá utilizar como nombre de archivo de la aplicación (sin la extensión) al instalar ésta.
El archivo de la aplicación inicia la aplicación de AIR en el motor de ejecución. Si no se facilita ningún valor para name,
el nombre de archivo (valor de filename) se utilizará también como nombre de la carpeta de instalación. Este
elemento es obligatorio.
La propiedad filename puede contener cualquier carácter Unicode (UTF-8) salvo los siguientes, cuyo uso en nombres
de archivo está prohibido en diversos sistemas de archivos:
* x2A
" x22
: x3A
> x3C
< x3E
? x3F
\ x5C
| x7C
El esquema del descriptor de aplicaciones de AIR 1.0 sólo permite definir un nodo de texto para el nombre (y no varios
elementos de text).
En AIR 1.1 (o posterior) se pueden especificar varios idiomas en el elemento name. En el ejemplo siguiente se especifica
el nombre en tres idiomas (inglés, francés y español):
<name>
<text xml:lang="en">Hello AIR</text>
<text xml:lang="fr">Bonjour AIR</text>
<text xml:lang="es">Hola AIR</text>
</name>
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 76
Configuración de las propiedades de una aplicación de AIR
El atributo xml:lang para cada elemento de texto especifica un código de idioma, de conformidad con lo definido en
RFC4646 (http://www.ietf.org/rfc/rfc4646.txt).
El instalador de aplicaciones de AIR utiliza el nombre que mejor se corresponde con el idioma de la interfaz de usuario
del sistema operativo del usuario. Por ejemplo, tomemos una instalación en la que el elemento name del archivo
descriptor de la aplicación incluye un valor para la configuración regional "es" (español). El instalador de aplicaciones
de AIR utiliza el nombre "es" si el sistema operativo identifica "es" (español) como el idioma de la interfaz de usuario.
También utiliza el nombre "es" si el idioma de la interfaz de usuario del sistema es es-ES (español de España). Sin
embargo, si el idioma de la interfaz de usuario es es-ES y el archivo descriptor de la aplicación define tanto el nombre
es-ES como el nombre es-UY, el instalador de aplicaciones de AIR utiliza el valor es-ES. Si la aplicación no define
ningún nombre que coincide con el idioma de la interfaz de usuario del sistema, el instalador de aplicaciones de AIR
utiliza el primer valor de name que se define en el archivo descriptor de la aplicación.
Si no se especifica ningún elemento name, el instalador de aplicaciones de AIR muestra el nombre de archivo definido
para filename como el nombre de la aplicación.
El elemento name sólo define el título de la aplicación que se utiliza en el instalador de aplicaciones de AIR. El
instalador de aplicaciones de AIR admite varios idiomas: chino tradicional, chino simplificado, checo, neerlandés,
inglés, francés, alemán, italiano, japonés, coreano, polaco, portugués brasileño, ruso, español, sueco y turco. El
instalador de aplicaciones de AIR selecciona el idioma visualizado (para texto que no sea el título y la descripción de
la aplicación) con base en el idioma de la interfaz de usuario del sistema. Esta selección de idioma es independiente de
la configuración del archivo descriptor de la aplicación.
El elemento nameno define las configuraciones regionales disponibles para la aplicación instalada y en
funcionamiento. Para obtener más información sobre el desarrollo de aplicaciones multilingües, consulte
“Localización de aplicaciones de AIR” en la página 142.
description (opcional) La descripción de la aplicación. Se muestra en el instalador de aplicaciones de AIR.
Si especifica un solo nodo de texto (en lugar de varios elementos para text), el instalador de aplicaciones de AIR utiliza
este nombre, cualquiera que sea el idioma seleccionado para el sistema:
<description>This is a sample AIR application.</description>
El esquema del descriptor de aplicaciones de AIR 1.0 sólo permite definir un nodo de texto para el nombre (y no varios
elementos de text).
En AIR 1.1 (o superior) se pueden especificar varios idiomas en el elemento description. En el ejemplo siguiente se
especifica una descripción en tres idiomas (inglés, francés y español):
<description>
<text xml:lang="en">This is a example.</text>
<text xml:lang="fr">C'est un exemple.</text>
<text xml:lang="es">Esto es un ejemplo.</text>
</description>
El atributo xml:lang para cada elemento de texto especifica un código de idioma, de conformidad con lo definido en
RFC4646 (http://www.ietf.org/rfc/rfc4646.txt).
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 77
Configuración de las propiedades de una aplicación de AIR
El instalador de aplicaciones de AIR utiliza la descripción que es más similar al idioma de la interfaz de usuario del
sistema operativo del usuario. Por ejemplo, tomemos una instalación en la que el elemento description del archivo
descriptor de la aplicación incluye un valor para la configuración regional "es" (española). El instalador de aplicaciones
de AIR utiliza el nombre "es" si el sistema del usuario identifica "es" (español) como el idioma de la interfaz de usuario.
También utiliza el nombre "es" si el idioma de la interfaz de usuario del sistema es es-ES (español de España). Sin
embargo, si el idioma de la interfaz de usuario del sistema es es-ES y el archivo descriptor de la aplicación define tanto
el nombre es-ES como el nombre es-UY, el instalador de aplicaciones de AIR utiliza el valor es-ES. Si la aplicación no
define ningún nombre que coincide con el idioma de la interfaz de usuario del sistema, el instalador de aplicaciones
de AIR utiliza el primer valor de description que se define en el archivo descriptor de la aplicación.
Para obtener más información sobre el desarrollo de aplicaciones multilingües, consulte “Localización de aplicaciones
de AIR” en la página 142.
copyright (opcional) La información de copyright para la aplicación de AIR. En Mac OS el aviso de copyright aparece
en el cuadro de diálogo Acerca de para la aplicación instalada. En Mac OS, la información de copyright también se
utiliza en el campo NSHumanReadableCopyright del archivo Info.plist para la aplicación.
<installFolder>Acme</installFolder>
<programMenuFolder>Acme/Applications</programMenuFolder>
La propiedad installFolder puede contener cualquier carácter Unicode (UTF-8) excepto aquellos cuyo uso en
nombres de archivo está prohibido en diversos sistemas de archivos (para ver la lista de excepciones, consulte la
anterior propiedad filename).
La propiedad installFolder es opcional. Si no se especifica ninguna propiedad para installFolder, la aplicación
se instala en un subdirectorio del directorio de instalación predeterminado basado en la propiedad name.
programMenuFolder (Opcional) Identifica dónde deben guardarse los accesos directos a la aplicación en el menú
Todos los programas del sistema operativo Windows o en el menú de aplicaciones de Linux. (En otros sistemas
operativos, en la actualidad se hace caso omiso a esta opción). Las restricciones sobre el número de caracteres que se
admiten en el valor de la propiedad son las mismas que para la propiedad installFolder. No utilice una barra
diagonal (/) como último carácter de este valor.
Si el contenido raíz de la aplicación es un archivo HTML en lugar de un archivo SWF, el elemento content
simplemente hace referencia al archivo HTML:
<content>AIRTunes.html</content>
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 79
Configuración de las propiedades de una aplicación de AIR
Los elementos secundarios del elemento initialWindow definen las propiedades de la ventana en la que se carga el
archivo de contenido raíz.
content El valor especificado para el elemento content es la URL para el archivo principal de contenido de la
aplicación. Éste será un archivo SWF o un archivo HTML. La URL se especifica relativa a la raíz de la carpeta de
instalación de la aplicación. (Al ejecutar una aplicación de AIR con ADL, la URL se indica relativa a la carpeta que
contiene el archivo descriptor de la aplicación. Se puede utilizar el parámetro root-dir de ADL para especificar otro
directorio raíz).
Nota: al tratarse como una URL el valor del elemento content, los caracteres del nombre del archivo de contenido deben
codificarse como URL de acuerdo con las reglas definidas en RFC 1738. Los caracteres de espacio, por ejemplo, deben
codificarse como %20.
title (Opcional) El título de la ventana.
systemChrome (Opcional) Si este atributo se define en standard, se mostrará el fondo cromático estándar
proporcionado por el sistema operativo. Si lo define en none, no se mostrará ningún fondo cromático del sistema.
Al utilizar el componente mx:WindowedApplication de Flex, si el fondo cromático del sistema no está configurado, el
componente aplica su fondo cromático personalizado. La opción de fondo cromático no puede modificarse durante el
tiempo de ejecución.
transparent (opcional) Defínalo en "true" si desea que la ventana de la aplicación admita la mezcla alfa. Una ventana
con transparencia puede dibujarse más lentamente y necesitar más memoria. La opción de transparencia no puede
modificarse durante el tiempo de ejecución.
Importante: sólo se puede establecer transparent en true si systemChrome se establece en none.
visible (opcional) El valor predeterminado es false. Defínalo en true solamente si desea que la ventana principal
quede visible en cuanto se haya creado, lo cual también mostrará los cambios de la ventana a medida que se colocan
sus componentes.
El componente mx:WindowedApplication de Flex muestra y activa la ventana de forma automática inmediatamente
antes de distribuir el evento applicationComplete, a menos que el atributo visible esté definido en false en la
definición MXML.
Puede convenir dejar la ventana principal oculta al principio para que no se muestren los ajustes de la posición y el
tamaño de la ventana y la disposición del contenido. Se podrá mostrar después la ventana llamando al método
activate() de la ventana o cambiando la propiedad visible a true.
x, y, width, height (opcionales) Límites iniciales de la ventana principal de la aplicación. Si no se definen estos valores,
el tamaño de la ventana quedará definido por las opciones del archivo SWF raíz o, en el caso de HTML, por el sistema
operativo. El valor máximo para width y height es de 2880 cada uno.
minSize, maxSize (opcionales) Tamaños mínimo y máximo de la ventana. Si no se definen estos valores, los
determinará el sistema operativo.
minimizable, maximizable, resizable (opcionales) Especifican si se puede minimizar, maximizar y redimensionar la
ventana. Estas opciones tienen el valor predeterminado true.
Nota: en los sistemas operativos como Mac OS X en los cuales la maximización de las ventanas es una operación de
redimensionamiento, para que la ventana no cambie de tamaño, tanto "maximizable" como "resizable" deben definirse
en false.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 80
Configuración de las propiedades de una aplicación de AIR
Si hay un elemento para un tamaño determinado, la imagen que contiene el archivo debe ser exactamente del tamaño
especificado. Si no se proporcionan todos los tamaños, el sistema operativo ajusta el tamaño más parecido para un uso
determinado del icono.
Nota: los iconos especificados no se añaden automáticamente al paquete de AIR. Los archivos de iconos deben estar
incluidos en sus lugares relativos correctos cuando se empaqueta de la aplicación.
Para obtener el mejor resultado posible, proporcione una imagen para cada uno de los tamaños disponibles. Asegúrese
también de que los iconos sean de buen aspecto tanto en el modo de color de 16 bits como en el de 32 bits.
Cuando la versión instalada de la aplicación tiene el elemento customUpdateUI definido como true y el usuario hace
doble clic en el archivo de AIR para una nueva versión o instala una actualización de la aplicación utilizando la función
de instalación integrada, el motor de ejecución abre la versión instalada de la aplicación. El motor de ejecución no abre
el instalador de aplicaciones de AIR predeterminado. La lógica de la aplicación determina entonces cómo continuar
con la operación de actualización. (Para que se lleve a cabo una actualización, el ID de la aplicación y del editor que
figuran en el archivo de AIR deben coincidir con los valores de la aplicación instalada).
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 81
Configuración de las propiedades de una aplicación de AIR
Nota: el mecanismo customUpdateUI sólo entra en juego si la aplicación ya está instalada y el usuario hace doble clic
en el archivo de instalación de AIR que contiene una actualización, o si instala una actualización de la aplicación
utilizando la función de instalación integrada. Puede descargar una actualización e iniciarla a través de la lógica de su
propia aplicación, visualizando la interfaz de usuario personalizada según convenga, esté o no customUpdateUI
definido en true.
Para obtener más información, consulte “Actualización de aplicaciones de AIR” en la página 105.
Nota: los métodos del motor de ejecución sólo pueden manejar asociaciones para los tipos de archivos declarados en el
descriptor de la aplicación.
<fileTypes>
<fileType>
<name>adobe.VideoFile</name>
<extension>avf</extension>
<description>Adobe Video File</description>
<contentType>application/vnd.adobe.video-file</contentType>
<icon>
<image16x16>icons/AIRApp_16.png</image16x16>
<image32x32>icons/AIRApp_32.png</image32x32>
<image48x48>icons/AIRApp_48.png</image48x48>
<image128x128>icons/AIRApp_128.png</image128x128>
</icon>
</fileType>
</fileTypes>
Los elementos name y extension son obligatorios para cada declaración de fileType que se incluya. Se puede utilizar
el mismo nombre con varias extensiones. La extensión identifica el tipo de archivo. (Especifique la extensión sin el
punto anterior.) El elemento description es opcional; lo presenta al usuario la interfaz de usuario del sistema
operativo. contentType es necesario en AIR 1.5 (era opcional en AIR 1.0 y 1.1). La propiedad ayuda al sistema
operativo a localizar la mejor aplicación para abrir un archivo en determinadas circunstancias. El valor debe ser el tipo
MIME del contenido del archivo. Se debe tener en cuenta que el valor se omite en Linux si el tipo de archivo ya se ha
registrado y dispone de un tipo MIME asignado.
Se pueden especificar iconos para la extensión de archivo utilizando el mismo formato que el elemento "icon" de la
aplicación. Los archivos de iconos también deben incluirse en el archivo de instalación de AIR (no se colocan
automáticamente en el paquete).
Si hay un tipo de archivo asociado con una aplicación de AIR, cada vez que un usuario abra un archivo de ese tipo se
invocará la aplicación. Si la aplicación ya está funcionando, AIR distribuye el objeto InvokeEvent a la instancia que se
esté ejecutando. En caso contrario, AIR iniciará primero la aplicación. En ambos casos la ruta al archivo puede
recuperarse del objeto InvokeEvent distribuido por el objeto NativeApplication. Puede utilizarse esta ruta para abrir
el archivo.
Para obtener más información, consulte las siguientes secciones:
• Gestión de asociaciones con archivos (para desarrolladores de ActionScript)
• Gestión de asociaciones con archivos (para desarrolladores de HTML)
• Captura de argumentos de la línea de comandos {para desarrolladores de ActionScript)
• Captura de argumentos de la línea de comandos (para desarrolladores de HTML)
Última modificación 1/5/2010 83
Cuando se establece este elemento, la aplicación sólo se puede empaquetar en los perfiles especificados. Utilice los
siguientes valores:
• desktop: perfil de escritorio.
Escritorio
Las aplicaciones de perfil de escritorio tienen acceso a todas las APIs de ActionScript, con las siguientes excepciones:
Escritorio ampliado
Las aplicaciones de perfil de escritorio ampliadas tienen acceso a las mismas APIs de ActionScript que la aplicación de
perfil de escritorio. Sin embargo, cuentan con dos capacidades adicionales:
• Las aplicaciones de perfil de escritorio ampliadas pueden iniciar procesos nativos e interaccionar con ellos. Para
obtener más información, consulte una de las siguientes referencias:
• Communicating with native processes in AIR (Comunicación con procesos nativos en AIR; en inglés.) (Para
desarrolladores de HTML)
• Communicating with native processes in AIR (Comunicación con procesos nativos en AIR; en inglés.) (Para
desarrolladores de HTML)
• Las aplicación de perfil de escritorio ampliada puede llamar a File.openWithDefaultApplication() para los
archivos de cualquier tipo. Las restricciones que se aplican en el perfil de escritorio no se aplican en el perfil de
escritorio ampliado. El método File.openWithDefaultApplication() permite la apertura en la aplicación
predeterminada registrada en el sistema operativo para abrir el archivo.
Dispositivo móvil
Las aplicaciones de perfil de dispositivo móvil tienen acceso la mayoría de las APIs de ActionScript 3.0, pero existen
excepciones y limitaciones. Asimismo, existen APIs que sólo funcionan en aplicaciones de perfil de dispositivo móvil.
Para obtener más información, consulte Compatibilidad de la API de ActionScript 3.0 con aplicaciones para iPhone.
Si la aplicación ya está instalada, el instalador ofrece al usuario la opción de abrir la versión existente de la misma o
actualizarla a la versión del archivo de AIR descargado. El instalador identifica la aplicación utilizando para ello el
ID de la aplicación y el ID del editor que figuran en el archivo de AIR.
3 Una vez concluida la instalación, haga clic en Finalizar.
En Mac OS, para instalar una versión actualizada de una aplicación el usuario debe contar con privilegios del sistema
adecuados para instalar programas en el directorio de aplicaciones. En Windows y Linux, el usuario debe contar con
privilegios de administrador.
Una aplicación también puede instalar una nueva versión mediante ActionScript o JavaScript. Para obtener más
información, consulte “Actualización de aplicaciones de AIR” en la página 105.
Una vez instalada la aplicación de AIR, basta con que el usuario haga doble clic en la aplicación para ejecutarla, al igual
que con cualquier otra aplicación del escritorio.
• En Windows, haga doble clic en el icono de la aplicación (que está instalada en el escritorio o en una carpeta) o
seleccione la aplicación en el menú Inicio.
• En Linux, haga doble clic en el icono de la aplicación (que está instalada en el escritorio o en una carpeta) o
seleccione la aplicación en el menú de aplicaciones.
• En Mac OS, haga doble clic en la aplicación en la carpeta en la que se instaló. El directorio de instalación
predeterminado es /Aplicaciones.
La función de instalación integrada permite al usuario instalar una aplicación de AIR haciendo clic en un vínculo en
una página web. La función de invocación desde el navegador permite al usuario ejecutar una aplicación de AIR
instalada haciendo clic en un vínculo en una página web. Estas funciones se describen en la siguiente sección.
• Puede comprobar si hay instalada una aplicación de AIR en particular. Consulte “Cómo comprobar desde una
página web si una aplicación de AIR está instalada” en la página 92.
• Puede comprobar si está instalado el motor de ejecución. Consulte “Cómo comprobar si está instalado el motor de
ejecución” en la página 92.
• Puede iniciar una aplicación de AIR instalada en el sistema del usuario. Consulte “Inicio desde el navegador de una
aplicación de AIR instalada” en la página 94.
Estas capacidades se proporcionan al llamar a las API de un archivo SWF alojado en adobe.com: air.swf. Puede
personalizar el archivo badge.swf y llamar a las API air.swf desde el propio archivo SWF.
Además, un archivo SWF que se ejecuta en el navegador puede comunicarse con una aplicación de AIR en curso
utilizando la clase LocalConnection. Para obtener más información, consulte Comunicación con otras instancias de
Flash Player y AIR (para desarrolladores de ActionScript) o Comunicación con otras instancias de Flash Player y AIR
(para desarrolladores de HTML).
Importante: las funciones que se describen en esta sección (y las API del archivo air.swf) requieren que el usuario tenga
Adobe® Flash® Player 9 actualización 3 instalado en Windows o Mac OS. En Linux, la función de instalación integrada
requiere Flash Player 10 (versión 10,0,12,36 o posterior). Se puede escribir código para comprobar la versión instalada de
Flash Player y proveer una interfaz alternativa para el usuario si no está instalada la versión de Flash Player que se
requiere. Por ejemplo, si hay una versión anterior de Flash Player instalada, puede proporcionar un vínculo a la versión
de descarga del archivo de AIR (en lugar de utilizar el archivo badge.swf o la API air.swf para instalar una aplicación).
Parámetro Descripción
appname Nombre de la aplicación que muestra el archivo SWF si no está instalado el motor de ejecución.
appurl (Obligatorio). URL del archivo de AIR que se va a descargar. Es necesario utilizar una URL absoluta (y no una
relativa).
airversion (Obligatorio). Para la versión 1.0 del motor de ejecución, defina esto en 1.0.
buttoncolor Color del botón de descarga (especificado como valor hexadecimal; por ejemplo, FFCC00).
messagecolor Color del mensaje de texto que aparece debajo del botón si no está instalado el motor de ejecución
(especificado como valor hexadecimal; por ejemplo, FFCC00).
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 89
Distribución, instalación y ejecución de aplicaciones de AIR
4 El tamaño mínimo del archivo badge.swf es de 217 píxeles de anchura por 180 píxeles de altura. Ajuste los valores
de los parámetros width y height de la función AC_FL_RunContent() de acuerdo con sus necesidades.
5 Cambie el nombre del archivo default_badge.html y ajuste su código (o inclúyalo en otra página HTML) para
adaptarlo a sus necesidades.
Nota: para la etiqueta embed HTML que carga el archivo badge.swf, no establezca el atributo wmode; déjelo definido en
el valor predeterminado ("window"). Otras configuraciones de wmode evitarán la instalación en algunos sistemas.
Asimismo, el uso de otras configuraciones de wmode genera un error: “Error #2044: ErrorEvent no controlado:. text=Error
#2074: El escenario es demasiado pequeño para la interfaz de usuario de descarga.”
También se puede editar y recompilar el archivo badge.swf. Para obtener más información, consulte “Modificación del
archivo badge.swf” en la página 89.
badge.fla El archivo de origen de Flash se utiliza para compilar el archivo badge.swf. El archivo badge.fla se compila en
un archivo SWF 9 (que se puede cargar en Flash Player).
AIRBadge.as Una clase de ActionScript 3.0 que define la clase de base que se utiliza en el archivo badge.fla.
Puede utilizar Flash CS3 o Flash CS4 para rediseñar la interfaz visual del archivo badge.swf.
La función constructora AIRBadge(), definida en la clase AIRBadge, carga el archivo air.swf alojado en
http://airdownload.adobe.com/air/browserapi/air.swf. El archivo air.swf incluye código para utilizar la función de
instalación integrada.
El método onInit() (en la clase AIRBadge) se invoca una vez satisfactoriamente cargado el archivo air.swf:
private function onInit(e:Event):void {
_air = e.target.content;
switch (_air.getStatus()) {
case "installed" :
root.statusMessage.text = "";
break;
case "available" :
if (_appName && _appName.length > 0) {
root.statusMessage.htmlText = "<p align='center'><font color='#"
+ _messageColor + "'>In order to run " + _appName +
", this installer will also set up Adobe® AIR®.</font></p>";
} else {
root.statusMessage.htmlText = "<p align='center'><font color='#"
+ _messageColor + "'>In order to run this application, "
+ "this installer will also set up Adobe® AIR®.</font></p>";
}
break;
case "unavailable" :
root.statusMessage.htmlText = "<p align='center'><font color='#"
+ _messageColor
+ "'>Adobe® AIR® is not available for your system.</font></p>";
root.buttonBg_mc.enabled = false;
break;
}
}
El código define la variable global _air en la clase principal del archivo air.swf. Esta clase incluye los siguientes
métodos públicos, a los que tiene acceso el archivo badge.swf para llamar a la función de instalación integrada:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 91
Distribución, instalación y ejecución de aplicaciones de AIR
Método Descripción
getStatus() Determina si el motor de ejecución está instalado (o puede instalarse) en el ordenador. Para obtener más
información, consulte “Cómo comprobar si está instalado el motor de ejecución” en la página 92.
installApplication() Instala la aplicación especificada en el equipo del usuario. Para obtener más información, consulte “Instalación
de una aplicación de AIR desde el navegador” en la página 93.
• url: una cadena que define la URL. Hay que utilizar una ruta de URL absoluta (y no una relativa).
• runtimeVersion: una cadena que indica la versión del motor de ejecución (por ejemplo: "1.0.M6") que
requiere la aplicación a instalarse.
Los valores para url y runtimeVersion se pasan al archivo SWF a través de las opciones de FlashVars en la página
HTML contenedora.
Si la aplicación se inicia automáticamente al instalarla, se puede utilizar la comunicación por LocalConnection para
que la aplicación instalada se ponga en contacto con el archivo badge.swf al invocarse. Para obtener más informacióm,
consulte Comunicación con otras instancias de Flash Player y AIR (para desarrolladores de ActionScript) o
Comunicación con otras instancias de Flash Player y AIR (para desarrolladores de HTML).
También se puede llamar al método getApplicationVersion() del archivo air.swf para comprobar si una aplicación
está instalada. Se puede llamar a este método antes del proceso de instalación de la aplicación o una vez iniciada la
instalación. Para obtener más información, consulte “Cómo comprobar desde una página web si una aplicación de
AIR está instalada” en la página 92.
loaderContext.applicationDomain = ApplicationDomain.currentDomain;
airSWFLoader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
airSWFLoader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"),
loaderContext);
function onInit(e:Event):void
{
airSWF = e.target.content;
}
Una vez cargado el archivo air.swf (cuando el objeto contentLoaderInfo de Loader distribuye el evento init), se
puede llamar a cualquiera de las API de air.swf. descritas en las siguientes secciones.
Nota: el archivo badge.swf suministrado con los SDK de AIR y Flex carga automáticamente el archivo air.swf. Consulte
“Utilización del archivo badge.swf para instalar una aplicación de AIR” en la página 88. Las instrucciones que aparecen
en esta sección son para crear su propio archivo SWF que cargue el archivo air.swf.
El método getStatus() devuelve uno de los siguientes valores de cadena, basado en el estado del motor de ejecución
en el ordenador:
"available" El motor de ejecución puede instalarse en este ordenador pero ahora no está instalado.
El método getStatus() emite un error si la versión necesaria de Flash Player (versión 9 actualización 3 o posterior
en Windows y Mac OS, o bien, versión 10 en Linux) no está instalada en el navegador.
Cómo comprobar desde una página web si una aplicación de AIR está
instalada
Un archivo SWF puede comprobar si una aplicación de AIR (con ID de la aplicación e ID del editor que coincidan)
está instalada, llamando al método getApplicationVersion() en el archivo air.swf cargado desde
http://airdownload.adobe.com/air/browserapi/air.swf. Para obtener más información, consulte “Carga del archivo
air.swf” en la página 91.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 93
Distribución, instalación y ejecución de aplicaciones de AIR
Una vez cargado el archivo air.swf, el archivo SWF puede llamar al método getApplicationVersion() del archivo
air.swf como en el ejemplo siguiente:
var appID:String = "com.example.air.myTestApplication";
var pubID:String = "02D88EEED35F84C264A183921344EEA353A629FD.1";
airSWF.getApplicationVersion(appID, pubID, versionDetectCallback);
function versionDetectCallback(version:String):void
{
if (version == null)
{
trace("Not installed.");
// Take appropriate actions. For instance, present the user with
// an option to install the application.
}
else
{
trace("Version", version, "installed.");
// Take appropriate actions. For instance, enable the
// user interface to launch the application.
}
}
Parámetros Descripción
appID ID de la aplicación. Para obtener más información, consulte “Definición de la identidad de la aplicación” en la
página 74.
pubID ID del editor de la aplicación. Para obtener más información, consulte “Identificador del editor de AIR” en la
página 98. Si la aplicación en cuestión no dispone de un ID de editor, establezca el parámetro pubID en una
cadena vacía (“”).
callback Función callback que cumple la función de controlador. El método getApplicationVersion() funciona de modo
asíncrono, y al detectar la versión instalada (o la falta de una), se invoca este método callback. La definición del
método callback debe incluir un parámetro, una cadena de caracteres, que se establece como la cadena de la
versión de la aplicación instalada. Si la aplicación no está instalada, se pasa un valor nulo a la función, como se
muestra en el ejemplo de código anterior.
El método getApplicationVersion() emite un error si la versión necesaria de Flash Player (versión 9 actualización
3 o posterior en Windows y Mac OS, o bien, versión 10 en Linux) no está instalada en el navegador.
Nota: a partir de AIR 1.5.3, el ID de editor queda desfasado. Los ID de editor no se vuelven a asignar a una aplicación
de forma automática. Por compatibilidad con versiones anteriores, las aplicaciones pueden continuar para especificar un
ID de editor.
El método installApplication() instala la aplicación especificada en el equipo del usuario. Este método utiliza los
siguientes parámetros:
Parámetro Descripción
url Una cadena de caracteres que define la URL del archivo de AIR a instalar. Hay que utilizar una ruta de URL
absoluta (y no una relativa).
runtimeVersion Una cadena que indica la versión del motor de ejecución (por ejemplo: "1.0") que requiere la aplicación a
instalarse.
arguments Un conjunto de argumentos a pasarse a la aplicación si se inicia en cuanto se haya instalado. Únicamente los
caracteres alfanuméricos se reconocen en los argumentos. Si necesita transmitir otros valores, considere el uso
de un esquema de codificación.
El método installApplication() sólo funciona cuando se le llama en el controlador de eventos para un evento de
usuario, por ejemplo al hacer clic con el ratón.
El método installApplication() emite un error si la versión necesaria de Flash Player (versión 9 actualización 3 o
posterior en Windows y Mac OS, o bien, versión 10 en Linux) no está instalada en el navegador.
En Mac OS, para instalar una versión actualizada de una aplicación el usuario debe contar con privilegios del sistema
adecuados para instalar programas en el directorio de aplicaciones (y privilegios de administrador si la aplicación
actualiza el motor de ejecución). En Windows, el usuario debe contar con privilegios de administrador.
También se puede llamar al método getApplicationVersion() del archivo air.swf para comprobar si una aplicación
ya está instalada. Se puede llamar a este método antes de que empiece el proceso de instalación de la aplicación o una
vez iniciada la instalación. Para obtener más información, consulte “Cómo comprobar desde una página web si una
aplicación de AIR está instalada” en la página 92. Una vez en ejecución la aplicación, ésta puede comunicarse con el
contenido SWF en el navegador utilizando la clase LocalConnection. Para obtener más informacióm, consulte
Comunicación con otras instancias de Flash Player y AIR (para desarrolladores de ActionScript) o Comunicación con
otras instancias de Flash Player y AIR (para desarrolladores de HTML).
Para obtener más información sobre el archivo descriptor de la aplicación, consulte “Configuración de las propiedades
de una aplicación de AIR” en la página 71.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 95
Distribución, instalación y ejecución de aplicaciones de AIR
Un archivo SWF en el navegador puede iniciar una aplicación de AIR, llamando al método launchApplication()
en el archivo air.swf cargado desde http://airdownload.adobe.com/air/browserapi/air.swf. Para obtener más
información, consulte “Carga del archivo air.swf” en la página 91.
Una vez cargado el archivo air.swf, el archivo SWF puede llamar al método launchApplication() del archivo air.swf
como en el código siguiente:
var appID:String = "com.example.air.myTestApplication";
var pubID:String = "02D88EEED35F84C264A183921344EEA353A629FD.1";
var arguments:Array = ["launchFromBrowser"]; // Optional
airSWF.launchApplication(appID, pubID, arguments);
El método launchApplication() se define en el nivel superior del archivo air.swf (que se carga en el dominio de
aplicación de la interfaz de usuario del archivo SWF). Al llamar a este método, AIR inicia la aplicación especificada (si
está instalada y se permite la invocación desde el navegador mediante la opción allowBrowserInvocation del
archivo descriptor de la aplicación). El método utiliza los siguientes parámetros:
Parámetro Descripción
appID ID de la aplicación que se va a iniciar. Para obtener más información, consulte “Definición de la identidad de la
aplicación” en la página 74.
pubID ID del editor de la aplicación que se va a iniciar. Para obtener más información, consulte “Identificador del
editor de AIR” en la página 98. Si la aplicación en cuestión no dispone de un ID de editor, establezca el
parámetro pubID en una cadena vacía (“”).
El método launchApplication() sólo funciona cuando se le llama en el controlador de eventos para un evento de
usuario, por ejemplo al hacer clic con el ratón.
El método launchApplication() emite un error si la versión necesaria de Flash Player (versión 9 actualización 3 o
posterior en Windows y Mac OS, o bien, versión 10 en Linux) no está instalada en el navegador.
Si el elemento allowBrowserInvocation está definido en false en el archivo descriptor de la aplicación, la llamada
al método launchApplication() no surtirá efecto.
Antes de presentar la interfaz de usuario para iniciar la aplicación, puede ser conveniente llamar al método
getApplicationVersion() en el archivo air.swf. Para obtener más información, consulte “Cómo comprobar desde
una página web si una aplicación de AIR está instalada” en la página 92.
Cuando se invoca la aplicación a través de la función de invocación desde el navegador, el objeto NativeApplication
de la aplicación distribuye un objeto BrowserInvokeEvent. Para obtener información, consulte Invocación de una
aplicación de AIR desde el navegador (para desarrolladores de ActionScript), o bien, Invocación de una aplicación de
AIR desde el navegador (para desarrolladores de HTML).
Si utiliza la función de invocación desde el navegador, asegúrese de tener en cuenta las posibles consecuencias para la
seguridad. Estas implicaciones se describen en Invocación de una aplicación de AIR desde el navegador (para
desarrolladores de ActionScript) e Invocación de una aplicación de AIR desde el navegador (para desarrolladores de
HTML).
Una vez en ejecución la aplicación, ésta puede comunicarse con el contenido SWF en el navegador utilizando la clase
LocalConnection. Para obtener más informacióm, consulte Comunicación con otras instancias de Flash Player y AIR
(para desarrolladores de ActionScript) o Comunicación con otras instancias de Flash Player y AIR (para
desarrolladores de HTML).
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 96
Distribución, instalación y ejecución de aplicaciones de AIR
Nota: a partir de AIR 1.5.3, el ID de editor queda desfasado. Los ID de editor no se vuelven a asignar a una aplicación
de forma automática. Por compatibilidad con versiones anteriores, las aplicaciones pueden continuar para especificar un
ID de editor.
Implementación en la empresa
Los administradores de TI pueden instalar el motor de ejecución de Adobe AIR y aplicaciones de AIR de forma
silenciosa con herramientas de implementación estándar. Los administradores de TI pueden llevar a cabo las
siguientes tareas:
• Realizar una instalación silenciosa del motor de ejecución de Adobe AIR empleando herramientas como Microsoft
SMS, IBM Tivoli o cualquier herramienta de implementación que permita las instalaciones silenciosas que utilizan
un arrancador.
• Efectuar una instalación silenciosa de la aplicación de AIR con las mismas herramientas que se utilizan para
implementar el motor de ejecución.
Para obtener más información, consulte Adobe AIR Administrator's Guide
(http://www.adobe.com/go/learn_air_admin_guide_en).
Registros de instalación
Los registros de instalación se crean cuando se instala el propio motor de ejecución de AIR o una aplicación de AIR.
Los archivos de registro se pueden examinar para ayudar a determinar la causa de cualquier problema de actualización
o instalación que se produzca.
Los archivos de registro se crean en las siguientes ubicaciones:
• Mac: registro del sistema estándar(/private/var/log/system.log)
• Windows XP: C:\Documents and Settings\<username>\Configuración local\Datos de
programa\Adobe\AIR\logs\Install.log
Si una aplicación se firma con un certificado con firma automática (o un certificado que no se vincula a un certificado
de confianza), el usuario debe asumir un mayor riesgo de seguridad al instalar la aplicación. El cuadro de diálogo de
instalación refleja este riesgo adicional:
Cuadro de diálogo de confirmación de instalación firmado por un certificado con firma automática
Importante: una entidad malintencionada podría falsificar un archivo de AIR con su identidad si lograra obtener su
archivo de almacén de claves para la firma descubre si clave privada.
Formatos de certificados
Las herramientas de firma de AIR aceptan cualquier almacén de claves accesibles a través de la arquitectura de
criptografía de Java (Java Cryptography Architecture o JCA). En esto se incluyen los almacenes de claves basados en
archivos, como archivos de formato PKCS12 (que suelen tener la extensión de archivo .pfx o .p12), archivos .keystore
de Java, almacenes de claves de hardware PKCS11 y los almacenes de claves del sistema. Los formatos de almacenes de
claves a los que tiene acceso ADT depende de la versión y configuración del motor de ejecución de Java que se utilice
para ejecutar ADT. El acceso a algunos tipos de almacén de claves, como los token de hardware PKCS11, pueden
necesitar que se instalen y configuren plugins de JCA y controladores de software adicionales.
Para firmar archivos de AIR, puede utilizar la mayoría de los certificados de firma de código existentes, o bien, puede
obtener un certificado nuevo emitido expresamente para firmar aplicaciones de AIR. Se pueden utilizar, por ejemplo,
cualquiera de los siguientes tipos de certificados de Verisign, Thawte, GlobalSign o ChosenSecurity:
• ChosenSecurity (en inglés)
• TC Publisher ID para Adobe AIR
• GlobalSign (en inglés)
• Certificado de firma de código ObjectSign
• Thawte:
• Certificado de AIR Developer
• Certificado de Apple Developer
• Certificado de JavaSoft Developer
• Certificado de Microsoft Authenticode
• VeriSign (en inglés):
• ID digital de Adobe AIR
• Microsoft Authenticode Digital ID
• Sun Java Signing Digital ID
Nota: el certificado se debe crear para realizar la firma de código. No se puede utilizar un certificado SSL ni otro tipo de
certificado para firmar archivos de AIR.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 100
Distribución, instalación y ejecución de aplicaciones de AIR
Marcas de hora
Cuando se firma un archivo de AIR, la herramienta de empaquetado consulta al servidor de una autoridad de marcas
de hora para obtener una fecha y hora de la firma que sean verificables independientemente. La marca de hora que se
obtiene se incorpora en el archivo de AIR. Siempre y cuando el certificado de firma sea válido en el momento de
firmarlo, se podrá instalar el archivo de AIR, incluso después de caducado el certificado. Por otro lado, si no se obtiene
la marca de hora, el archivo de AIR dejará de poder instalarse cuando caduque o se revoque el certificado.
La opción predeterminada es que las herramientas de empaquetado de AIR obtienen una marca de hora. No obstante,
para que las aplicaciones puedan empaquetarse cuando no se dispone del servicio de marcas de hora, el marcado de
hora se puede desactivar. Adobe recomienda que todo archivo de AIR que se distribuya al público incluya una marca
de hora.
La autoridad de marcas de hora predeterminada que utilizan las herramientas de empaquetado de AIR es Geotrust.
Obtención de un certificado
Para obtener un certificado, normalmente visitaría el sitio web de la entidad emisora de certificados y llevaría a cabo
el proceso de adquisición de la empresa en cuestión. Las herramientas que se utilizan para producir el archivo del
almacén de claves que necesitan las herramientas de AIR dependen del tipo de certificado que se compre, cómo se
guarda el certificado en el ordenador receptor y, en algunos casos, el navegador que se utilizó para obtener el
certificado. Por ejemplo, para obtener y exportar un certificado de Adobe Developer desde Thawte, debe utilizar
Mozilla Firefox. El certificado podrá entonces exportarse como archivo con prefijo .pfx o .p12 directamente desde la
interfaz de usuario de Firefox.
Nota: las versiones de Java 1.5 y posteriores no aceptan caracteres ASCII superior en contraseñas utilizadas para proteger
archivos de certificado PKCS12. Las herramientas de desarrollo de AIR utilizan Java para crear paquetes firmados de
AIR. Si el certificado se exporta como archivo .p12 o .pfx, utilice únicamente caracteres ASCII normales en la contraseña.
Se puede generar un certificado con firma automática con Air Development Tool (ADT) que se utiliza para
empaquetar los archivos de instalación de AIR. También pueden utilizarse algunas herramientas de terceros.
Para ver las instrucciones sobre cómo generar un certificado con firma automática, así como instrucciones para firmar
un archivo de AIR, consulte “Empaquetado de archivos de instalación de AIR con AIR Developer Tool (ADT)” en la
página 54. También se pueden exportar y firmar archivos de AIR con Flash Builder, Dreamweaver y la actualización
de AIR para Flash.
El siguiente ejemplo describe cómo obtener un certificado de desarrollador de AIR de la autoridad de certificación
Thawte y prepararlo para el uso con ADT.
2 En la lista de certificados para firma de códigos, seleccione el certificado de Adobe AIR Developer.
3 Complete el proceso de inscripción de tres pasos. Necesitará facilitar información sobre su organización, así como
datos de contacto. A continuación, Thawte lleva a cabo su proceso de verificación de identidad y es posible que
solicite información suplementaria. Una vez finalizada la verificación, Thawte le enviará un correo electrónico con
instrucciones sobre cómo recuperar el certificado.
Nota: para obtener más información (en inglés) sobre el tipo de documentación que se requiere, haga clic en:
https://www.thawte.com/ssl-digital-certificates/free-guides-whitepapers/pdf/enroll_codesign_eng.pdf.
4 Recupere el certificado emitido del sitio de Thawte. El certificado se guarda automáticamente en el almacén de
claves de Firefox.
5 Exporte del almacén de claves un archivo que contenga la clave privada y el certificado siguiendo los pasos que se
indican a continuación:
Nota: la clave privada y el certificado de Firefox se exportan en un formato .p12 (pfx) compatible con ADT, Flex, Flash
y Dreamweaver.
a Abra el cuadro de diálogo Administrador de certificados de Firefox:
b En Windows: abra Herramientas -> Opciones -> Opciones avanzadas -> Cifrado -> Ver certificados.
c En Mac OS: abra Firefox -> Preferencias -> Avanzado -> Cifrado -> Ver certificados.
d En Linux: abra Editar -> Preferencias -> Avanzado -> Cifrado -> Ver certificados.
e Seleccione el certificado para firma de códigos de Adobe AIR en la lista de certificados y haga clic en el botón
Hacer copia.
f Escriba un nombre de archivo y el lugar al que se debe exportar el archivo del almacén de claves, y haga clic en
Guardar.
g Si utilizó la contraseña maestra de Firefox, se le solicitará escribir la contraseña para el dispositivo de seguridad
del software a fin de poder exportar el archivo. (Esta contraseña es de uso exclusivo en Firefox).
h En el cuadro de diálogo para la contraseña para la copia de seguridad del certificado, cree una contraseña para el
archivo del almacén de claves.
Importante: esta contraseña protege el archivo del almacén de claves y se necesita cuando se utiliza el archivo para
firmar aplicaciones de AIR. Conviene elegir una contraseña segura.
i Haga clic en OK (Aceptar). Debería recibir un mensaje confirmando la creación de la contraseña para copias de
seguridad. El archivo del almacén contiene la clave privada y el certificado se guarda con una extensión .p12 (en
formato PKCS12).
6 Utilice el archivo de almacén de claves exportado con ADT, Flash Builder, Flash Professional o Dreamweaver. Hay
que utilizar la contraseña creada para el archivo cada vez que se firme una aplicación de AIR.
Importante: la clave privada y el certificado se siguen guardando en el almacén de claves de Firefox. Mientras que esto
permite exportar otra copia del archivo del certificado, también facilita otro punto de acceso que debe protegerse para
mantener la seguridad de su certificado y su clave privada.
Cambio de certificado
En algunos casos, es necesario cambiar el certificado utilizado para firmar actualizaciones de la aplicación de AIR.
Entre estos casos se encuentran:
• Renovación del certificado de firma original.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 102
Distribución, instalación y ejecución de aplicaciones de AIR
• La actualización de un certificado con firma automática a un certificado emitido por una entidad emisora de
certificados.
• El cambio de un certificado con firma automática que va a caducar por otro.
• El cambio de un certificado comercial a otro (por ejemplo, cuando cambia la identidad de la empresa).
Para que AIR reconozca un archivo de AIR como actualización, es necesario firmar tanto los archivos de AIR
originales como de actualización con el mismo certificado, o bien, aplicar una firma de migración de certificados a la
actualización. Una firma de migración es una segunda firma aplicada al paquete de AIR de actualización utilizando el
certificado original. La firma de migración utiliza el certificado original, que establece que el firmante es el editor
original de la aplicación.
Una vez instalado un archivo de AIR con una firma de migración, el nuevo certificado pasa a ser el certificado
principal. Las actualizaciones posteriores no requieren una firma de migración. No obstante, las firmas de migración
se deben aplicar tanto tiempo como sea posible a los usuarios que suelan omitir las actualizaciones.
Importante: el certificado se deben cambiar antes de que caduque el certificado original. Si no se crea una actualización
firmada con firma de migración antes de que caduque el certificado, los usuarios tendrán que desinstalar la versión
existente de la aplicación antes de instalar la actualización. A partir de AIR 1.5.3, un certificado caducado se puede
utilizar para aplicar una firma de migración en un período de gracia de 180 días una vez haya caducado el certificado.
(El certificado caducado no se puede utilizar para aplicar la firma de la aplicación principal.)
Para cambiar el certificado:
1 Cree una actualización de la aplicación.
2 Empaquete y firme el archivo de AIR de actualización con el certificado nuevo.
3 Vuelva a firmar el archivo de AIR con el certificado original (con el comando -migrate de ADT).
Un archivo de AIR con firma de migración es, en otros aspectos, un archivo de AIR normal. Si se instala la aplicación
en un sistema que no tiene la versión original, AIR la instala de la forma habitual.
Nota: antes de AIR 1.5.3, la firma de una aplicación de AIR con un certificado renovado no siempre requería una firma
de migración. Con el inicio de AIR 1.5.3, una firma de migración siempre es necesaria para los certificados renovados.
El procedimiento para aplicar una firma de migración se describe en “Firma de un archivo de AIR para cambiar el
certificado de la aplicación” en la página 68.
Nota: al publicar una nueva aplicación de AIR con AIR 1.5.3 o posterior, no se debe especificar un ID de editor.
Certificados caducados
A partir de AIR 1.5.3, un certificado que haya caducado en los últimos 180 días aún se puede utilizar para aplicar una
firma de migración a una actualización de la aplicación. Para aprovechar este período de gracia, el descriptor de la
aplicación de actualización debe especificar 1.5.3 en el atributo de espacio de nombres. Transcurrido el período de
gracia, el certificado no se podrá volver a utilizar. Los usuarios que actualicen a una nueva versión de la aplicación
tendrán que instalar su versión existente. Se debe tener en cuenta que no existe período de gracia en las versiones de
AIR anteriores a 1.5.3.
Terminología
Esta sección contiene un glosario de algunos de los principales términos que necesita conocer al tomar decisiones
sobre cómo firmar la aplicación para su distribución pública.
Término Descripción
Entidad emisora de certificados (AC) Entidad de una red de infraestructura de claves públicas que interviene como tercero de confianza
y que, en última instancia, certifica la identidad del propietario de una clave pública. Una AC emite
certificados digitales firmados por su propia clave privada para constatar que ha verificado la
identidad del titular del certificado.
Declaración de prácticas de Plantea las prácticas y políticas de la entidad emisora de certificados respecto de la emisión y
certificación (DPC) verificación de certificados. La DPC forma parte del contracto entre la AC y sus suscriptores y partes
confiantes. Reseña también las políticas de verificación de identidad y el nivel de garantía que
ofrecen los certificados emitidos.
Lista de revocación de certificados Lista de certificados emitidos que han sido revocados y en los cuales ya no se debe confiar. AIR
(LRC) comprueba la LRC en el momento de firmarse una aplicación de AIR y, si no hay marca de hora,
nuevamente cuando se instala la aplicación.
Cadena de certificación Secuencia de certificados en la que cada certificado de la cadena ha sido firmado por el certificado
siguiente.
Certificado digital Documento digital que contiene información acerca de la identidad del propietario, la clave
pública del propietario y la identidad del propio certificado. Un certificado emitido por una
autoridad de certificación está firmado a su vez por un certificado de propiedad de la AC emisora.
Firma digital Mensaje o resumen cifrado que sólo puede descifrarse con la clave pública de un par clave pública-
clave privada. En una PKI la firma digital contiene un certificado digital (o más) que en última
instancia llevan hasta la entidad emisora de certificados. Una firma digital sirve para validar que un
mensaje (o un archivo informático) no ha sido alterado desde que se firmó (dentro de los límites
de garantía que ofrezca el algoritmo criptográfico que se utilizó) y, suponiendo que se confía en la
entidad emisora de certificados, para validar la identidad del firmante.
Almacén de claves Base de datos que contiene certificados digitales y, en algunos casos, las claves privadas asociadas.
Java Cryptography Architecture (JCA) Arquitectura de criptografía de Java: arquitectura ampliable para administrar y acceder a los
almacenes de claves. Para obtener más información, consulte la guía de consulta de Java
Cryptography Architecture (en inglés).
PKCS #11 Cryptographic Token Interface Standard (norma de interfaces de tokens criptográficos) de RSA
Laboratories. Un almacén de claves basado en tokens de hardware.
PKCS #12 Personal Information Exchange Syntax Standard (norma para la sintaxis de intercambio de
información personal) de RSA Laboratories. Un almacén de claves basado en archivo que suele
contener una clave privada y su certificado digital asociado.
Clave privada La mitad privada de un sistema criptográfico asimétrico que consta de clave pública y clave
privada. La clave privada es confidencial y no debe nunca transmitirse a través de una red. Los
mensajes con firma digital son cifrados con la clave privada por parte del firmante.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 104
Distribución, instalación y ejecución de aplicaciones de AIR
Término Descripción
Clave pública La mitad pública de un sistema criptográfico asimétrico que consta de clave pública y clave
privada. La clave pública se distribuye libremente y se utiliza para descifrar los mensajes cifrados
con la clave privada.
Public Key Infrastructure (PKI) Infraestructura de claves públicas: sistema de confianza en el que las autoridades de certificación
autentican la identidad de los propietarios de claves públicas. Los clientes de la red confían en los
certificados digitales emitidos por una AC de confianza para verificar la identidad del firmante de
un mensaje o archivo digital.
Marca de hora Dato firmando digitalmente que contiene la fecha y hora en que se produjo un evento. ADT puede
incluir en un paquete de AIR una marca de hora provista por un servidor de hora en conformidad
con la norma RFC 3161. Cuando la hay, AIR utiliza la marca de hora para establecer la validez de un
certificado en el momento de firmar. Esto permite instalar una aplicación de AIR una vez caducado
su certificado de firma.
Autoridad de marcas de hora Autoridad que emite marcas de hora. Para que AIR la reconozca, la marca de hora debe estar en
conformidad con la norma RFC 3161 y la firma de la marca de hora debe encadenarse con un
certificado raíz de confianza en la máquina en que se instale la aplicación.
Última modificación 1/5/2010 105
Actualización de aplicaciones
La clase Updater (del paquete flash.desktop) incluye un método, update(), que se puede utilizar para actualizar la
aplicación actualmente en ejecución a una versión distinta. Por ejemplo, si el usuario tiene una versión del archivo de
AIR ("Sample_App_v2.air") en el escritorio, el siguiente código actualizaría la aplicación:
Ejemplo de ActionScript:
var updater:Updater = new Updater();
var airFile:File = File.desktopDirectory.resolvePath("Sample_App_v2.air");
var version:String = "2.01";
updater.update(airFile, version);
Ejemplo de JavaScript:
var updater = new air.Updater();
var airFile = air.File.desktopDirectory.resolvePath("Sample_App_v2.air");
var version = "2.01";
updater.update(airFile, version);
Antes de que una aplicación utilice la clase Updater, el usuario o la aplicación deben descargar la versión actualizada
del archivo de AIR en el equipo. Para obtener más información, consulte “Descarga de un archivo de AIR en el equipo
del usuario” en la página 108.
Cadena de versión
Para que el archivo de AIR se pueda instalar, la cadena que se especifica como parámetro version del método
update() debe coincidir con la cadena del atributo version del elemento principal application del archivo
descriptor de la aplicación. Es preciso especificar el parámetro version por motivos de seguridad. Al solicitar a la
aplicación que verifique el número de versión en el archivo de AIR, la aplicación no instalará por error una versión
anterior. (Una versión anterior de la aplicación puede presentar una vulnerabilidad de seguridad que se haya
solucionado en la aplicación instalada actualmente.) La aplicación también comprueba la cadena de versión en el
archivo de AIR y la compara con la de la aplicación instalada para evitar desactualizaciones.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 107
Actualización de aplicaciones de AIR
La cadena de versión puede tener cualquier formato. Por ejemplo, "2.01" o "versión 2". Es el usuario (el desarrollador
de la aplicación) quien debe decidir qué formato darle a esta cadena. El motor de ejecución no valida la cadena de
versión; el código de la aplicación debe hacerlo antes de actualizar la aplicación.
Si una aplicación de Adobe AIR descarga un archivo de AIR por Internet, se recomienda disponer de un mecanismo
que permite al servicio Web notificar a la aplicación de Adobe AIR sobre la descarga actual de la versión. La aplicación
puede utilizar esta cadena como el parámetro version del método update(). Si el archivo de AIR se obtiene por otros
medios que impiden conocer la versión del archivo de AIR, la aplicación de AIR puede examinar el archivo de AIR
para extraer la información sobre su versión. (Un archivo de AIR es un archivo ZIP comprimido y el archivo descriptor
de la aplicación es el segundo registro del archivo.)
Para obtener más información sobre el archivo descriptor de aplicación, consulte “Configuración de las propiedades
de una aplicación de AIR” en la página 71.
Esta interfaz siempre se utiliza la primera vez que el usuario instala la versión de una aplicación en un ordenador. Sin
embargo, es posible definir una interfaz propia para utilizarla en el futuro. Si su aplicación define una interfaz de
actualización personalizada, especifique un elemento customUpdateUI en el archivo descriptor de la aplicación para
la aplicación instalada actualmente:
<customUpdateUI>true</customUpdateUI>
Cuando la aplicación se instale y el usuario abra un archivo de AIR con un ID de aplicación e ID de editor que
coincidan con los de la aplicación instalada, será el motor de ejecución el encargado de abrir la aplicación, no el archivo
de instalación predeterminado de la aplicación de AIR. Para obtener más información, consulte “Interfaz de usuario
personalizada para actualizaciones” en la página 80.
La aplicación puede decidir, cuando se ejecute (cuando el objeto NativeApplication.nativeApplication
distribuye un evento load), si actualiza o no la aplicación (con la clase Updater). Si decide actualizarse, puede presentar
su propia interfaz de instalación al usuario (interfaz que no es igual que la estándar).
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 108
Actualización de aplicaciones de AIR
function loaded(event:Event):void {
urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
writeAirFile();
}
function writeAirFile():void {
var file:File = File.applicationStorageDirectory.resolvePath("My App v2.air");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(fileData, 0, fileData.length);
fileStream.close();
trace("The AIR file is written.");
}
Ejemplo de JavaScript:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 109
Actualización de aplicaciones de AIR
function loaded(event) {
urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
writeAirFile();
}
function writeAirFile() {
var file = air.File.desktopDirectory.resolvePath("My App v2.air");
var fileStream = new air.FileStream();
fileStream.open(file, air.FileMode.WRITE);
fileStream.writeBytes(fileData, 0, fileData.length);
fileStream.close();
trace("The AIR file is written.");
}
<html>
<head>
<script src="AIRAliases.js" />
<script>
var file;
var currentVersion = "1.2";
function system extension() {
file = air.File.appStorageDirectory.resolvePath("Preferences/version.txt");
air.trace(file.nativePath);
if(file.exists) {
checkVersion();
} else {
firstRun();
}
}
function checkVersion() {
var stream = new air.FileStream();
stream.open(file, air.FileMode.READ);
var reversion = stream.readUTFBytes(stream.bytesAvailable);
stream.close();
if (reversion != currentVersion) {
window.document.getElementById("log").innerHTML
= "You have updated to version " + currentVersion + ".\n";
} else {
saveFile();
}
window.document.getElementById("log").innerHTML
+= "Welcome to the application.";
}
function firstRun() {
window.document.getElementById("log").innerHTML
= "Thank you for installing the application. \n"
+ "This is the first time you have run it.";
saveFile();
}
function saveFile() {
var stream = new air.FileStream();
stream.open(file, air.FileMode.WRITE);
stream.writeUTFBytes(currentVersion);
stream.close();
}
</script>
</head>
<body onLoad="system extension()">
<textarea ID="log" rows="100%" cols="100%" />
</body>
</html>
Si la aplicación guarda datos localmente (por ejemplo, en el directorio de almacenamiento de la aplicación), puede
buscar datos guardados previamente (de versiones anteriores) durante la primera ejecución de la aplicación.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 112
Actualización de aplicaciones de AIR
Al realizar el desarrollo con el uso de Flash Builder, añada el archivo SWC en la ficha de ruta de biblioteca de la
configuración de la ruta de compilación de Flex en el cuadro de diálogo de propiedades.
Asegúrese de copiar los archivos SWC en el directorio al que se hará referencia en el compilador amxmlc (usando el
SDK de Flex) o Flash Builder.
En primer lugar, cree una aplicación de AIR que llame al marco de actualización:
1 Si su aplicación es una aplicación de AIR basada en HTML, cargue el archivo ApplicationUpdaterUI.js:
<script src="ApplicationUpdater_UI.swf" type="application/x-shockwave-flash"/>
2 En la lógica del programa de su aplicación de AIR, cree una instancia de un objeto ApplicationUpdaterUI.
En ActionScript, utilice el siguiente código:
var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();
Es posible que desee añadir este código en una función de inicialización que se ejecute una vez cargada la aplicación.
3 Cree un archivo de texto denominado updateConfig.xml y añádale lo siguiente:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0">
<url>http://example.com/updates/update.xml</url>
<delay>1</delay>
</configuration>
Edite el elemento URL del archivo updateConfig.xml para que coincida con la ubicación final del archivo descriptor
de actualización en su servidor web (consulte el siguiente procedimiento).
delay es el número de días que la aplicación espera entre las búsquedas de actualizaciones.
6 Cree una segunda versión de la aplicación de AIR que tenga una versión distinta a la primera aplicación. (La versión
se especifica en el archivo descriptor de la aplicación, en el elemento version.)
A continuación, añada la versión de actualización de la aplicación de AIR al servidor web:
1 Sitúe la versión de actualización del archivo de AIR en el servidor web.
2 Cree un archivo de texto denominado updateDescriptor.xml y agréguele el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?>
<update xmlns="http://ns.adobe.com/air/framework/update/description/1.0">
<version>1.1</version>
<url>http://example.com/updates/sample_1.1.air</url>
<description>This is the latest version of the Sample application.</description>
</update>
Edite los elementos version, URL y description del archivo updateDescriptor.xml para que coincida con el
archivo de AIR de actualización.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 115
Actualización de aplicaciones de AIR
3 Añada el archivo updateDescriptor.xml al mismo directorio del servidor web que contiene el archivo de AIR de
actualización.
Este es un ejemplo básico, pero proporciona la funcionalidad de actualización suficiente para diversas aplicaciones. En
el resto del documento se describe cómo emplear el marco de actualización para que mejor se adapte a sus necesidades.
Para obtener otro ejemplo del uso de marco de actualización, consulte las siguientes aplicaciones de ejemplo en el entro
de desarrollo de Adobe AIR:
• Update Framework in a Flex-based Application
(http://www.adobe.com/go/learn_air_qs_update_framework_flex_en) (Marco de actualización en una aplicación
basada en Flex; en inglés)
• Update Framework in a Flash-based Application (Marco de actualización en una aplicación basada en Flash; en
inglés)(http://www.adobe.com/go/learn_air_qs_update_framework_flash_en)
• Update Framework in a HTML-based Application
(http://www.adobe.com/go/learn_air_qs_update_framework_html_en) (Marco de actualización en una aplicación
basada en HTML; en inglés)
Si desea definir la etiqueta description mediante varios idiomas, utilice varios elementos text que definan un
atributo lang:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 116
Actualización de aplicaciones de AIR
Sitúe el archivo descriptor de actualización, junto con el archivo de actualización de AIR, en el servidor web.
El directorio de plantillas incluido con el descriptor de actualización contiene archivos descriptores de actualización
de ejemplo. Éstos incluyen versiones en un solo idioma y varios idiomas.
Ejemplo de JavaScript:
var appUpdater = new runtime.air.update.ApplicationUpdater();
El código anterior utiliza la clase ApplicationUpdater (que no proporciona ninguna interfaz de usuario). Si desea usar
la clase ApplicationUpdaterUI (que proporciona una interfaz de usuario), utilice lo siguiente:
Ejemplo de ActionScript:
var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();
Ejemplo de JavaScript:
var appUpdater = new runtime.air.update.ApplicationUpdaterUI();
En los ejemplos de código restantes de este documento se presupone que se ha creado una instancia de un objeto
updater denominada appUpdater.
• delay: un número. Representa un intervalo de tiempo determinado en días (se permiten valores similares a 0,25)
para buscar actualizaciones. El valor de 0 (valor predeterminado) especifica que updater no realiza ninguna
comprobación periódica automática.
El archivo de configuración para ApplicationUpdaterUI puede incluir el siguiente elemento además de los elementos
updateURL y delay:
• defaultUI: una lista de elementosdialog. Cada elemento dialog dispone de un atributo name que se corresponde
con el cuadro de diálogo en la interfaz de usuario. Todos los elementos dialog cuentan con un atributo visible
que define si el cuadro de diálogo es visible. El valor predeterminado es true. Entre los posibles valores para el
atributo name se encuentran los siguientes:
• "checkForUpdate": corresponde a los cuadros de diálogo de búsqueda de actualizaciones, sin actualizaciones
y error de actualización.
• "downloadUpdate": corresponde al cuadro de diálogo de descarga de actualizaciones.
Cuando se establece en false, el cuadro de diálogo correspondiente no aparece como parte del proceso de
actualización.
A continuación se incluye un ejemplo del archivo de configuración para el marco ApplicationUpdater:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0">
<url>http://example.com/updates/update.xml</url>
<delay>1</delay>
</configuration>
Se muestra un ejemplo del archivo de configuración para el marco ApplicationUpdaterUI, que incluye una definición
para el elemento defaultUI:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0">
<url>http://example.com/updates/update.xml</url>
<delay>1</delay>
<defaultUI>
<dialog name="checkForUpdate" visible="false" />
<dialog name="downloadUpdate" visible="false" />
<dialog name="downloadProgress" visible="false" />
</defaultUI>
</configuration>
Ejemplo de JavaScript:
appUpdater.configurationFile = new air.File("app:/cfg/updateConfig.xml");
El directorio de plantillas del marco de actualización incluye un archivo de configuración de ejemplo, config-
template.xml.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 118
Actualización de aplicaciones de AIR
Las propiedades del objeto updater son updateURL y delay. Estas propiedades definen la misma configuración que
los elementos updateURL y delay en el archivo de configuración: la dirección URL del archivo descriptor de
actualización y el intervalo para buscar actualizaciones. Si se especifica un archivo de configuración y la configuración
en código, todas las propiedades establecidas utilizando código tienen prioridad sobre la configuración
correspondiente en el archivo de configuración.
Se debe definir la propiedad updateURL, a través del archivo de configuración o mediante script (consulte “Definición
del archivo descriptor de actualización y adición del archivo de AIR al servidor web” en la página 115) antes de utilizar
updater (antes de llamar al método initialize() del objeto updater, descrito en “Inicialización del marco de
actualización” en la página 119).
El marco ApplicationUpdaterUI define estas propiedades adicionales del objeto updater:
• isCheckForUpdateVisible: corresponde a los cuadros de diálogo de búsqueda de actualizaciones, sin
actualizaciones y error de actualización.
• isDownloadUpdateVisible: corresponde al cuadro de diálogo de descarga de actualizaciones.
Todas las propiedades hacen referencia a uno o varios cuadros de diálogo en la interfaz de usuario
ApplicationUpdaterUI. Cada propiedad es un valor booleano, con un valor predeterminado de true. Cuando se
establece en false, los cuadros de diálogo correspondientes no aparecen como parte del proceso de actualización.
Estas propiedades de cuadro de diálogo anulan la configuración del archivo de configuración de actualización.
Proceso de actualización
El marco de actualización de AIR completa el proceso de actualización en los siguientes pasos:
1 Con la inicialización de updater se verifica si se ha realizado una comprobación de actualización en el intervalo de
días definido (consulte “Definición de la configuración de actualización” en la página 116). Si hay programada una
comprobación de actualización, el proceso de actualización continúa.
2 Updater descarga e interpreta el archivo descriptor de actualización.
3 También se descarga el archivo de actualización de AIR.
4 Updater instala la versión actualizada de la aplicación.
El objeto updater distribuye eventos a la finalización de cada uno de estos pasos. En la versión de ApplicationUpdater,
es posible cancelar los eventos que indiquen la correcta finalización de un paso en el proceso. Si cancela uno de estos
eventos, se cancelará el siguiente paso del proceso. En la versión de ApplicationUpdaterUI, updater presenta un cuadro
de diálogo que permite al usuario cancelar o continuar en cada paso del proceso.
Si cancela el evento, se pueden llamar a métodos del objeto updater para reanudar el proceso.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 119
Actualización de aplicaciones de AIR
Algunos métodos del objeto updater sólo se ejecutan si updater se encuentra en un determinado estado.
Este método no realiza ninguna operación si el proceso de actualización ya se está ejecutando. De lo contrario, inicia
el proceso de actualización.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 120
Actualización de aplicaciones de AIR
El objeto updater puede distribuir el siguiente evento como resultado de la llamada al método checkNow():
• UpdateEvent.CHECK_FOR_UPDATE justo antes de que intente descargar el archivo descriptor de actualización.
Si se cancela el evento checkForUpdate, se puede llamar al método checkForUpdate() del objeto updater. (Consulte
la siguiente sección.) Si no cancela el evento, el proceso de actualización continúa comprobando el archivo descriptor
de actualización.
Al llamar al método checkForUpdate(), updater interpreta y descarga de forma asincrónica el archivo descriptor de
actualización. Como resultado de la llamada al método checkForUpdate(), el objeto updater puede distribuir los
siguientes eventos:
• StatusUpdateEvent.UPDATE_STATUS: updater ha descargado e interpretado el archivo descriptor de
actualización correctamente. Este evento cuenta con las siguientes propiedades:
• available: valor booleano. Se establece en true si existe una versión distinta disponible a la de la aplicación
actual; de lo contrario, se establece en false (la versión es la misma).
• version: cadena. La versión del archivo descriptor de la aplicación del archivo de actualización.
• details: conjunto. Si no existen versiones localizadas de la descripción, este conjunto devuelve una cadena
vacía ("") como primer elemento y la descripción como segundo elemento.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 121
Actualización de aplicaciones de AIR
Si existen varias versiones de la descripción (en el archivo descriptor de actualización), el conjunto contiene
varios subconjuntos. Cada conjunto dispone de dos elementos: el primero es un código de idioma (como, por
ejemplo, "en") y el segundo es la descripción correspondiente (una cadena) para ese idioma. Consulte
“Definición del archivo descriptor de actualización y adición del archivo de AIR al servidor web” en la
página 115.
• StatusUpdateErrorEvent.UPDATE_ERROR: hubo un error y updater no pudo descargar ni interpretar el archivo
descriptor de actualización.
appUpdater.downloadUpdate();
Al llamar a este método, updater descarga de forma asincrónica la versión de actualización del archivo de AIR.
El método downloadUpdate() puede distribuir los siguientes eventos:
• UpdateEvent.DOWNLOAD_START: se ha establecido la conexión con el servidor. Al utilizar la biblioteca
ApplicationUpdaterUI, este evento muestra un cuadro de diálogo con una barra de progreso para realizar un
seguimiento del curso de la descarga.
• ProgressEvent.PROGRESS: se distribuye periódicamente conforme progresa la descarga del archivo.
Actualización de la aplicación
El objeto ApplicationUpdater distribuye el evento downloadComplete cuando finaliza la descarga del archivo de
actualización. Si cancela el comportamiento predeterminado, puede llamar al método installUpdate() para que se
reanude el proceso de actualización:
appUpdater.installUpdate(file);
Al llamar a este método, updater instala una versión de actualización del archivo de AIR. El método incluye un
parámetro, file, que es un objeto File que hace referencia al archivo de AIR para usar como actualización.
El objeto ApplicationUpdater puede distribuir el evento beforeInstall como resultado de la llamada al método
installUpdate():
Este método hace que updater instale una versión de actualización de la aplicación desde el archivo de AIR.
El método installFromAIRFile() puede distribuir los siguientes eventos:
• StatusFileUpdateEvent.FILE_UPDATE_STATUS: se distribuye una vez que ApplicationUpdater ha validado
correctamente el archivo enviado utilizando el método installFromAIRFile(). Este evento tiene las propiedades
siguientes:
• available: se establece en true si existe una versión distinta disponible a la de la aplicación actual; de lo
contrario, se establece en false (las versiones son las mismas).
• version: cadena que representa la nueva versión disponible.
Puede cancelar este evento si la propiedad disponible del objeto StatusFileUpdateEvent se define como true. La
cancelación del evento implica que no continúe la actualización. Llame al método installUpdate() para
continuar con la actualización cancelada.
• StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR: hubo un error y updater no pudo instalar la aplicación de AIR.
Este método cancela todas las descargas pendientes, elimina todos los archivos descargados incompletos y reinicia el
temporizador de comprobación periódica.
El método no realiza ninguna operación si el objeto updater se está inicializando.
El marco de actualización utiliza la descripción que mejor se adapta a la cadena de localización del usuario final. Para
obtener más información, consulte Definición del archivo descriptor de actualización y adición del archivo de AIR al
servidor web.
Los desarrolladores de Flex puede añadir directamente un nuevo idioma al paquete"ApplicationUpdaterDialogs".
Los desarrolladores de JavaScript pueden llamar al método addResources() del objeto updater. Este método agrega
de forma dinámica un nuevo paquete de recursos para un idioma. El paquete de recursos define cadenas localizadas
para un idioma. Estas cadenas se utilizan en distintos campos de texto de cuadro de diálogo.
Los desarrolladores de JavaScript pueden emplear la propiedad localeChain de la clase ApplicationUpdaterUI para
definir la cadena de configuraciones regionales empleada en la interfaz de usuario. Generalmente sólo los
desarrolladores de JavaScript (HTML) utilizan esta propiedad. Los desarrolladores de Flex pueden usar
ResourceManager para administrar la cadena de configuraciones regionales.
Por ejemplo, el siguiente código de JavaScript define paquetes de recursos para rumano y húngaro:
appUpdater.addResources("ro_RO",
{titleCheck: "Titlu", msgCheck: "Mesaj", btnCheck: "Buton"});
appUpdater.addResources("hu", {titleCheck: "Cím", msgCheck: "Üzenet"});
var languages = ["ro", "hu"];
languages = languages.concat(air.Capabilities.languages);
var sortedLanguages = air.Localizer.sortLanguagesByPreference(languages,
air.Capabilities.language,
"en-US");
sortedLanguages.push("en-US");
appUpdater.localeChain = sortedLanguages;
Para obtener más información, consulte la descripción del método addResources() de la clase
ApplicationUpdaterUI en la referencia del lenguaje.
Última modificación 1/5/2010 124
Ejemplo de JavaScript:
var appXml:XML = air.ativeApplication.nativeApplication.applicationDescriptor;
En ActionScript 3.0, se puede acceder a los datos del descriptor de la aplicación como objeto XML (E4X), tal y como
se muestra a continuación.
var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns:Namespace = appXml.namespace();
var appId = appXml.ns::id[0];
var appVersion = appXml.ns::version[0];
var appName = appXml.ns::filename[0];
air.trace("appId:", appId);
air.trace("version:", appVersion);
air.trace("filename:", appName);
var xmlString = air.NativeApplication.nativeApplication.applicationDescriptor;
En JavaScript, se puede utilizar un objeto DOMParser para analizar los datos, tal y como se muestra en el ejemplo
siguiente:
var xmlString = air.NativeApplication.nativeApplication.applicationDescriptor;
var appXml = new DOMParser();
var xmlobject = appXml.parseFromString(xmlString, "text/xml");
var root = xmlobject.getElementsByTagName('application')[0];
var appId = root.getElementsByTagName("id")[0].firstChild.data;
var appVersion = root.getElementsByTagName("version")[0].firstChild.data;
var appName = root.getElementsByTagName("filename")[0].firstChild.data;
air.trace("appId:", appId);
air.trace("version:", appVersion);
air.trace("filename:", appName);
Para obtener más información, consulte “Estructura del archivo descriptor de la aplicación” en la página 71.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 125
Lectura de la configuración de una aplicación
Ejemplo de JavaScript:
air.trace(air.NativeApplication.nativeApplication.applicationID);
Nota: cuando se ejecuta una aplicación de AIR con ADL, no tendrá ID de editor a menos que se le asigne uno
temporalmente utilizando el indicador -pubID en la línea de comandos de ADL.
El ID del editor para una aplicación instalada también aparece en el archivo META-INF/AIR/publisherid del
directorio de instalación de la aplicación.
Para obtener más información, consulte “Identificador del editor de AIR” en la página 98.
Última modificación 1/5/2010 126
El archivo AIRSourceViewer.js define una clase, SourceViewer, a la que se puede acceder desde el código JavaScript
llamando a air.SourceViewer.
La clase SourceViewer define tres métodos: getDefault(), setup() y viewSource().
Método Descripción
getDefault() Método estático. Devuelve una instancia de SourceViewer, que se puede utilizar para llamar a los otros
métodos.
setup() Aplica las opciones de configuración al visor de código fuente. Para obtener más información, consulte
“Configuración del visor de código fuente” en la página 126
viewSource() Abre una nueva ventana en la que el usuario puede examinar y abrir archivos de origen de la aplicación host.
Nota: el código que utiliza el visor de código fuente debe estar en el entorno limitado de seguridad de la aplicación (en un
archivo del directorio de la aplicación).
Por ejemplo, el siguiente código JavaScript crea una instancia de un objeto Source Viewer y abre la ventana de Source
Viewer donde se incluyen todos los archivos de origen:
var viewer = air.SourceViewer.getDefault();
viewer.viewSource();
default
Cadena que especifica la ruta relativa al archivo inicial que se mostrará en el visor de código fuente.
Por ejemplo, el siguiente código JavaScript abre la ventana del visor de código fuente con el archivo index.html como
archivo inicial mostrado:
var viewer = air.SourceViewer.getDefault();
var configObj = {};
configObj.default = "index.html";
viewer.viewSource(configObj);
exclude
Conjunto de cadenas que especifican los archivos o directorios que se excluirán de la lista del visor de código fuente.
Las rutas son relativas al directorio de la aplicación. Los caracteres comodines no se admiten.
Por ejemplo, el siguiente código JavaScript abre la ventana del visor de código fuente donde se incluyen todos los
archivos de origen, excepto AIRSourceViewer.js y los archivos de los subdirectorios Images y Sounds:
var viewer = air.SourceViewer.getDefault();
var configObj = {};
configObj.exclude = ["AIRSourceViewer.js", "Images" "Sounds"];
viewer.viewSource(configObj);
initialPosition
Conjunto que incluye dos números, que especifican las coordenadas iniciales x e y de la ventana del visor de código
fuente.
Por ejemplo, el siguiente código JavaScript abre la ventana del visor de código fuente con las coordenadas de la pantalla
[40, 60] (X = 40, Y = 60):
var viewer = air.SourceViewer.getDefault();
var configObj = {};
configObj.initialPosition = [40, 60];
viewer.viewSource(configObj);
modal
Valor booleano que especifica si el visor de código fuente debe ser una ventana modal (true) o no modal (false). De
forma predeterminada, la ventana del visor de código fuente es modal.
Por ejemplo, el siguiente código JavaScript abre la ventana del visor de código fuente de modo que el usuario pueda
interactuar tanto con la ventana del visor como con cualquier ventana de la aplicación:
var viewer = air.SourceViewer.getDefault();
var configObj = {};
configObj.modal = false;
viewer.viewSource(configObj);
typesToAdd
Conjunto de cadenas que especifica los tipos de archivo que se incluirán en la lista del visor de código fuente, además
de los tipos predeterminados incluidos.
De forma predeterminada, la lista Visor de origen incluye los siguientes tipos de archivo:
• Archivos de texto: TXT, XML, MXML, HTM, HTML, JS, AS, CSS, INI, BAT, PROPERTIES, CONFIG.
• Archivo de imagen: JPG, JPEG, PNG, GIF.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 128
Visualización de código fuente
Si no se especifica ningún valor, se incluyen todos los tipos predeterminados (excepto los especificados en la
propiedad typesToExclude).
Por ejemplo, el siguiente código JavaScript abre la ventana del visor de código fuente con los archivos VCF y
VCARD:
var viewer = air.SourceViewer.getDefault();
var configObj = {};
configObj.typesToAdd = ["text.vcf", "text.vcard"];
viewer.viewSource(configObj);
Para cada tipo de archivo que se incluya, se debe especificar "text" (para los tipos de archivo de texto) o "image" (para
los tipos de archivo de imagen).
typesToExclude
Conjunto de cadenas que especifican los tipos de archivo que se excluirán del visor de código fuente.
De forma predeterminada, la lista Visor de origen incluye los siguientes tipos de archivo:
• Archivos de texto: TXT, XML, MXML, HTM, HTML, JS, AS, CSS, INI, BAT, PROPERTIES, CONFIG.
• Archivo de imagen: JPG, JPEG, PNG, GIF.
Por ejemplo, el siguiente código JavaScript abre la ventana del visor de código fuente sin incluir los archivos GIF y XML:
var viewer = air.SourceViewer.getDefault();
var configObj = {};
configObj.typesToExclude = ["image.gif", "text.xml"];
viewer.viewSource(configObj);
Para cada tipo de archivo que se incluya, se debe especificar "text" (para los tipos de archivo de texto) o "image"
(para los tipos de archivo de imagen).
Los directorios se incluyen entre corchetes. El usuario puede hacer clic en una llave para expandir o contraer la lista de
un directorio.
El visor de código fuente puede mostrar el código de los archivos de texto con extensiones reconocidas (por ejemplo,
HTML, HTML, JS, TXT, XML, etc.) o de archivos de imagen con extensiones de imagen reconocidas (JPG, JPEG, PNG
y GIF). Si el usuario selecciona un archivo que no dispone de una extensión reconocida, aparece el mensaje de error
“Cannot retrieve text content from this filetype” (No se puede recuperar el contenido de texto de este tipo de archivo).
Todos los archivos de origen excluidos mediante el método setup() no se incluyen en la lista (consulte “Carga,
configuración y apertura del visor de código fuente” en la página 126).
Última modificación 1/5/2010 130
Introspector de AIR
El introspector de aplicaciones HTML/JavaScript de Adobe AIR (denominado AIR HTML Introspector) ofrece
funciones útiles para ayudar en el desarrollo y depuración de aplicaciones basadas en HTML:
• Incluye una herramienta introspectora que permite señalar un elemento de la interfaz de usuario en la aplicación y
ver su marcado y propiedades DOM.
• Incluye una consola para enviar referencias de objetos para introspección y es posible ajustar valores de propiedad
y ejecutar código JavaScript. Asimismo, se pueden serializar objetos en la consola, lo que supone limitaciones para
editar los datos. También se puede copiar y guardar texto desde la consola.
• Incluye una vista de árbol para las funciones y propiedades DOM.
• Permite editar atributos y nodos de texto para elementos DOM.
• Realiza listados de vínculos, estilos CSS, imágenes y archivos de JavaScript cargados en la aplicación.
• Permite visualizar el código fuente HTML inicial y el código fuente de marcado para la interfaz de usuario.
• Permite acceder a archivos en el directorio de la aplicación. (Esta función sólo está disponible en la consola AIR
HTML Introspector abierta para el entorno limitado de la aplicación. No está disponible para las consolas abiertas
para el contenido del entorno limitado que no pertenece a la aplicación.)
• Incluye un visor para objetos XMLHttpRequest y sus propiedades, entre las que se incluyen responseText y
responseXML (si están disponibles).
• Puede realizar búsquedas por texto coincidente en los archivos y el código fuente.
Asimismo, incluya en archivo en todos los archivos HTML que se correspondan con diferentes ventanas nativas de la
aplicación.
Importante: incluya el archivo AIRIntrospector.js únicamente al desarrollar y depurar la aplicación. Elimínelo de la
aplicación de AIR empaquetada que se distribuya.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 131
Depuración con el introspector HTML de AIR
El archivo AIRIntrospector.js define una clase, Console, a la que se puede acceder desde el código JavaScript, llamando
a air.Introspector.Console.
Nota: el código que utilice el introspector de AIR debe estar en el entorno limitado de seguridad de la aplicación (en un
archivo del directorio de la aplicación).
No obstante, resulta más útil enviar un objeto complejo a la ficha. Por ejemplo, la siguiente página HTML incluye un
botón (btn1) que llama a una función que, a su vez, envía el propio objeto del botón a la ficha Console (Consola):
<html>
<head>
<title>Source Viewer Sample</title>
<script type="text/javascript" src="scripts/AIRIntrospector.js"></script>
<script type="text/javascript">
function logBtn()
{
var button1 = document.getElementById("btn1");
air.Introspector.Console.log(button1);
}
</script>
</head>
<body>
<p>Click to view the button object in the Console.</p>
<input type="button" id="btn1"
onclick="logBtn()"
value="Log" />
</body>
</html>
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 132
Depuración con el introspector HTML de AIR
Cuando se hace clic en el botón, la ficha Console (Consola) muestra el objeto btn1 y se puede expandir la vista de árbol
del objeto para inspeccionar sus propiedades:
Se puede editar una propiedad del objeto haciendo clic en la lista situada a la derecha del nombre de la propiedad y
modificando el listado de texto.
Los métodos info(), error() y warn() son similares al método log(). Sin embargo, cuando se llama a estos
métodos, la consola muestra un icono al principio de la línea:
Método Icono
info()
error()
warn()
Los métodos log(), warn(), info() y error() envían una referencia sólo a un objeto real, por lo que las propiedades
disponibles son las que se muestran en el momento de la visualización. Si desea serializar el objeto real, utilice el
método dump(). El método cuenta con dos parámetros:
Parámetro Descripción
levels Número máximo de niveles que se examinarán en el árbol del objeto (además del nivel de raíz). El valor
predeterminado es 1 (lo que significa que se muestra un nivel superior al nivel de raíz del árbol). Este
parámetro es opcional.
Al llamar al método dump() se serializa un objeto antes de enviarlo a la ficha Console (Consola), por lo que no se
pueden editar las propiedades de los objetos. Por ejemplo, considérese el fragmento de código siguiente:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 133
Depuración con el introspector HTML de AIR
Cuando se ejecuta este código, la consola muestra el objeto testObject y sus propiedades, pero no se pueden editar
los valores de las propiedades en la consola.
closeIntrospectorOnExit true Establece la ventana del inspector para que se cierre cuando se cierren
todas las demás ventanas de la aplicación.
debuggerKey 123 (tecla F12) Código de tecla del método abreviado de teclado para mostrar y ocultar la
ventana del introspector de AIR.
debugRuntimeObjects true Establece el introspector para que amplíe los objetos del motor de
ejecución definidos en JavaScript.
introspectorKey 122 (tecla F11) Código de tecla del método abreviado de teclado para abrir el panel
Inspect (Inspeccionar).
showTimestamp true Establece la ficha Console (Consola) para que las marcas de hora
aparezcan al principio de todas las líneas.
showSender true Establece la ficha Console (Consola) para que muestre información sobre
el objeto que envía el mensaje al principio de todas las líneas.
La ventana del introspector de AIR dispone de séis fichas: Console (Consola), HTML, DOM, Assets (Componentes),
Source (Código fuente) y XHR, tal y como se muestra en la siguiente ilustración:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 135
Depuración con el introspector HTML de AIR
• Para borrar la consola, haga clic con el botón derecho del ratón en el texto y seleccione Clear Console (Borrar
consola).
• Para guardar texto en la ficha Console (Consola) en un archivo, haga clic con el botón derecho del ratón en la ficha
de consola y seleccione Save Console To File (Guardar consola en archivo).
• Para guardar texto en la ficha Console (Consola) en el portapapeles, haga clic con el botón derecho del ratón en la
ficha de consola y seleccione Save Console To Clipboard (Guardar consola en portapapeles). Para copiar sólo texto
seleccionado en el portapapeles, haga clic con el botón derecho del ratón en el texto y seleccione Copy (Copiar).
• Para guardar texto de la clase Console en un archivo, haga clic con el botón derecho del ratón en la ficha de consola
y seleccione Save Console To File (Guardar consola en archivo).
• Para buscar texto coincidente mostrado en la ficha, presione Ctrl+F en Windows o Comando+F en Mac OS. (Las
búsquedas no se realizan en los nodos de árbol que no estén visibles.)
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 136
Depuración con el introspector HTML de AIR
Ficha HTML
La ficha HTML permite ver todo el DOM de HTML en una estructura de árbol. Haga clic en un elemento para ver sus
propiedades en la parte derecha de la ficha. Haga clic en los iconos + y - para expandir y contraer un nodo en el árbol.
Se puede editar cualquier atributo o elemento de texto en la ficha HTML y el valor editado se refleja en la aplicación.
Haga clic en el botón Inspect (Inspeccionar) (situado a la izquierda de la lista de fichas de la ventana del introspector
de AIR). Se puede hacer clic en cualquier elemento de la página HTML de la ventana principal y el objeto DOM
asociado se muestra en la ficha HTML. Si la ventana principal está seleccionada, también se puede pulsar el método
abreviado de teclado para activar y desactivar el botón Inspect (Inspeccionar). El método abreviado de teclado es F11
de forma predeterminada. Es posible configurar el método abrevado de teclado para sea una tecla distinta a F11;
consulte “Configuración del introspector de AIR” en la página 133.
Haga clic en el botón Refresh Active Window (Actualizar ventana activa) (situado en la parte superior de la ventana
del introspector de AIR) para actualizar los datos que se muestran en la ficha HTML.
Presione Ctrl+F en Windows o Comando+F en Mac OS para buscar texto coincidente que se muestre en la ficha. (Las
búsquedas no se realizan en los nodos de árbol que no estén visibles.)
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 137
Depuración con el introspector HTML de AIR
Ficha DOM
La ficha DOM muestra los objetos de ventana en una estructura de árbol. Se puede editar cualquier propiedad string
y numeric y el valor editado se refleja en la aplicación.
Haga clic en el botón Refresh Active Window (Actualizar ventana activa) (situado en la parte superior de la ventana
del introspector de AIR) para actualizar los datos que se muestran en la ficha DOM.
Presione Ctrl+F en Windows o Comando+F en Mac OS para buscar texto coincidente que se muestre en la ficha. (Las
búsquedas no se realizan en los nodos de árbol que no estén visibles.)
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 138
Depuración con el introspector HTML de AIR
Haga clic en el botón Refresh Active Window (Actualizar ventana activa) (situado en la parte superior de la ventana
del introspector de AIR) para actualizar los datos que se muestran en la ficha Assets (Componentes).
Presione Ctrl+F en Windows o Comando+F en Mac OS para buscar texto coincidente que se muestre en la ficha. (Las
búsquedas no se realizan en los nodos de árbol que no estén visibles.)
• Archivos de la aplicación: incluye los archivos en el directorio de la aplicación. Esta lista sólo está disponible para
el introspector de AIR cuando se inicia desde el contenido del entorno limitado de seguridad de la aplicación. En
esta sección se puede ver el contenido de archivos de texto o ver imágenes.
Haga clic en el botón Refresh Active Window (Actualizar ventana activa) (situado en la parte superior de la ventana
del introspector de AIR) para actualizar los datos que se muestran en la ficha Source (Código fuente).
Presione Ctrl+F en Windows o Comando+F en Mac OS para buscar texto coincidente que se muestre en la ficha. (Las
búsquedas no se realizan en los nodos de árbol que no estén visibles.)
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 140
Depuración con el introspector HTML de AIR
Ficha XHR
La ficha XHR intercepta toda la comunicación XMLHttpRequest en la aplicación y registra la información. Esto
permite ver las propiedades XMLHttpRequest, entre las que se incluyen responseText y responseXML (cuando están
disponibles) en una vista de árbol.
Presione Ctrl+F en Windows o Comando+F en Mac OS para buscar texto coincidente que se muestre en la ficha. (Las
búsquedas no se realizan en los nodos de árbol que no estén visibles.)
• Desde el contenido del entorno limitado ajeno a la aplicación no es posible abrir el introspector de AIR pulsando
la tecla F12 ni llamando a uno de los métodos de la clase air.Introspector.Console. La ventana del introspector sólo
se puede abrir haciendo clic en el botón Open Introspector (Abrir introspector). El botón se añade de forma
predeterminada a la esquina superior derecha de iframe o frame. (Debido a las restricciones de seguridad aplicadas
al contenido del entorno limitado ajeno a la aplicación, una ventana nueva sólo se puede abrir como resultado de
un gesto del usuario como, por ejemplo, hacer clic en un botón.)
• Es posible abrir ventanas del introspector de AIR independientes para el entorno limitado de la aplicación y el
entorno limitado ajeno a la aplicación. Los dos entornos se pueden diferenciar utilizando el título que aparece en
las ventanas del introspector de AIR.
• La ficha Source (Código fuente) no muestra archivos de la aplicación cuando el introspector de AIR se ejecuta desde
un entorno limitado ajeno a la aplicación.
• El introspector de AIR sólo puede consultar código en el entorno limitado desde el que se ha abierto.
Última modificación 1/5/2010 142
Se pueden especificar varios idiomas para los elementos name y description en el archivo descriptor de la aplicación.
En el ejemplo siguiente se especifica el nombre de la aplicación en tres idiomas (inglés, francés y alemán):
<name>
<text xml:lang="en">Sample 1.0</text>
<text xml:lang="fr">Échantillon 1.0</text>
<text xml:lang="de">Stichprobe 1.0</text>
</name>
El atributo xml:lang de cada elemento de texto especifica un código de idioma, tal y como se define en RFC4646
(http://www.ietf.org/rfc/rfc4646.txt).
El elemento "name" sólo define el nombre de la aplicación que presenta el instalador de aplicaciones de AIR. El
instalador de aplicaciones de AIR utiliza el valor localizado que mejor se corresponde con el idioma de la interfaz de
usuario definido en la configuración del sistema operativo.
Se pueden especificar varias versiones de idiomas del elemento description en el archivo descriptor de la aplicación.
Este elemento define el texto descriptivo que presenta el instalador de aplicaciones de AIR.
Estas opciones sólo se aplican a los idiomas que se ofrecen en el instalador de aplicaciones de AIR. No definen las
configuraciones regionales disponibles para la aplicación instalada y en funcionamiento. Las aplicaciones de AIR
pueden ofrecer interfaces de usuario compatibles con varios idiomas, incluidos los del instalador de aplicaciones de
AIR y otros adicionales.
Para obtener más información, consulte “Definición de propiedades en el archivo descriptor de la aplicación” en la
página 72.
El SDK de AIR 1.1 incluye una arquitectura de localización de HTML. El archivo JavaScript AIRLocalizer.js define la
arquitectura. El archivo AIRLocalizer.js se encuentra en el directorio frameworks del SDK de AIR. Este archivo incluye
la clase air.Localizer, que ofrece funciones de utilidad para la creación de aplicaciones compatibles con varias versiones
localizadas.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 144
Localización de aplicaciones de AIR
El objeto air.Localizer.localizer es un objeto de instancia única que define métodos y propiedades para utilizar
y gestionar los recursos localizados. La clase Localizer incluye los métodos siguientes:
Método Descripción
getFile() Obtiene el texto de un paquete de recursos especificado para una configuración regional especificada.
Consulte “Obtención de recursos para una configuración regional específica” en la página 150.
getLocaleChain() Devuelve los idiomas de la cadena de configuraciones regionales. Consulte “Definición de la cadena de
configuraciones regionales” en la página 149.
getResourceBundle() Devuelve las claves del paquete y los valores correspondientes como un objeto. Consulte “Obtención de
recursos para una configuración regional específica” en la página 150.
getString() Obtiene la cadena de caracteres definida para un recurso. Consulte “Obtención de recursos para una
configuración regional específica” en la página 150.
setBundlesDirectory( Configura la ubicación del directorio de paquetes (bundles). Consulte “Personalización de las opciones de AIR
) HTML Localizer” en la página 148.
setLocalAttributePre Define el prefijo para los atributos de localización que se utilizan en los elementos DOM de HTML. Consulte
fix() “Personalización de las opciones de AIR HTML Localizer” en la página 148.
setLocaleChain() Define el orden de los idiomas en la cadena de configuraciones regionales. Consulte “Definición de la cadena
de configuraciones regionales” en la página 149.
sortLanguagesByPrefe Ordena las configuraciones regionales en la cadena de configuraciones regionales en función del orden en
rence() que se encuentran en la configuración del sistema operativo. Consulte “Definición de la cadena de
configuraciones regionales” en la página 149.
update() Actualiza el DOM de HTML (o un elemento DOM) con cadenas de caracteres localizadas procedentes de la
actual cadena de configuraciones regionales. Para ver una discusión sobre las cadenas de configuraciones
regionales, consulte “Gestión de cadenas de configuraciones regionales” en la página 146. Para obtener más
información sobre el método update(), consulte “Actualización de elementos DOM para utilizar la
configuración regional actual” en la página 147.
Propiedad Descripción
localizer Devuelve una referencia al objeto Localizer de instancia única para la aplicación.
Un archivo de propiedades que contiene el texto siguiente define seis pares clave-valor:
title=Sample Application
greeting=Hello in English.
exitMessage=Thank you for using the application.
color1=Red
color2=Green
color3=Blue
Este ejemplo muestra una versión en inglés del archivo de propiedades, que se guarda en el directorio en.
La versión en francés de este archivo de propiedades se coloca en el directorio fr:
title=Application Example
greeting=Bonjour en français.
exitMessage=Merci d'avoir utilisé cette application.
color1=Rouge
color2=Vert
color3=Bleu
Se pueden definir varios archivos de recursos para distintos tipos de información. Por ejemplo: un archivo
legal.properties podría contener un texto jurídico estándar (como un aviso de copyright). Quizá se desee utilizar ese
recurso en varias aplicaciones. Asimismo, se pueden definir archivos separados que definen el contenido localizado
para distintas partes de la interfaz de usuario.
Utilice para estos archivos la codificación UTF-8 para mayor compatibilidad con distintos idiomas.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 146
Localización de aplicaciones de AIR
La aplicación define automáticamente la primera configuración regional de la cadena como la configuración regional
predeterminada que se va a utilizar. Puede pedir al usuario que seleccione una configuración regional la primera vez
que ejecuta la aplicación. Puede optar por guardar la selección en un archivo de preferencias y en adelante utilizar esa
configuración regional cada vez que se inicie la aplicación.
La aplicación puede utilizar cadenas de caracteres de recurso en cualquier configuración regional de la cadena de
configuraciones regionales. Si una configuración regional específica no define una cadena de caracteres de recurso, la
aplicación utiliza la siguiente cadena de caracteres de recurso que coincida para otras configuraciones regionales
definidas en la cadena de dichas configuraciones.
Se puede personalizar la cadena de configuraciones regionales llamando al método setLocaleChain() del objeto
Localizer. Consulte “Definición de la cadena de configuraciones regionales” en la página 149.
Si la configuración regional actual no define ningún valor que coincida, la arquitectura de localización busca en el resto
de la cadena de configuraciones regionales. Utiliza la siguiente configuración regional de la cadena que tenga definido
un valor.
En el siguiente ejemplo el texto (el atributo innerHTML) del elemento p utiliza el valor de la clave greeting definido
en el archivo de propiedades predeterminadas:
<p local_innerHTML="default.greeting" />
En el siguiente ejemplo el atributo del valor (y el texto mostrado) del elemento input utiliza el valor de la clave
btnBlue definido en el archivo de propiedades predeterminadas:
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 147
Localización de aplicaciones de AIR
Para actualizar el DOM de HTML para que utilice las cadenas de caracteres definidas en la cadena de configuraciones
regionales actual, llame al método update() del objeto Localizer. Al llamar al método update() el objeto Localizer
analiza el DOM y aplica manipulaciones donde encuentre atributos de localización ("local_..."):
air.Localizer.localizer.update();
Se pueden definir valores tanto para un atributo ("innerHTML", por ejemplo) como para su correspondiente atributo
de localización ("local_innerHTML", por ejemplo). En este caso, la arquitectura de localización sólo sobrescribe el
valor del atributo si encuentra un valor coincidente en la cadena de localización. Por ejemplo, el siguiente elemento
define ambos atributos, value y local_value:
<input type="text" value="Blue" local_value="default.btnBlue"/>
También puede actualizarse un solo elemento DOM en particular. Consulte el apartado siguiente, “Actualización de
elementos DOM para utilizar la configuración regional actual” en la página 147.
De forma predeterminada, AIR HTML Localizer utiliza "local_" como prefijo para los atributos que definen las
opciones de localización para un elemento. Por ejemplo: de forma predeterminada, un atributo local_innerHTML
define el nombre del paquete y recurso que se utiliza para el valor innerHTML de un elemento. También de forma
predeterminada, un atributo local_value define el nombre del paquete y recurso que se utiliza para el atributo value
de un elemento. Se puede configurar AIR HTML Localizer para que utilice otro prefijo de atributo en lugar de
"local_". Consulte “Personalización de las opciones de AIR HTML Localizer” en la página 148.
Para actualizar un solo elemento DOM especificado, páselo como parámetro al método update(). El método
update() tiene un solo parámetro, parentNode, que es optativo. Cuando está especificado, el parámetro parentNode
define el elemento DOM que se debe localizar. Llamar al método update() y especificar un parámetro parentNode
define valores localizados para todos los elementos secundarios que especifican atributos de localización.
Por ejemplo, tomemos el siguiente elemento div:
<div id="colorsDiv">
<h1 local_innerHTML="default.lblColors" ></h1>
<p><input type="button" local_value="default.btnBlue" /></p>
<p><input type="button" local_value="default.btnRed" /></p>
<p><input type="button" local_value="default.btnGreen" /></p>
</div>
Para actualizar este elemento de modo que utilice cadenas de caracteres localizadas en la cadena de configuraciones
regionales actual, use el código JavaScript siguiente:
var divElement = window.document.getElementById("colorsDiv");
air.Localizer.localizer.update(divElement);
Pase una ruta válida como parámetro path. De lo contrario, el método emite una excepción
BundlePathNotFoundError. Este error tiene a "BundlePathNotFoundError" como su propiedad name y su
propiedad message especifica la ruta no válida.
Última modificación 1/5/2010 CREACIÓN DE APLICACIONES DE ADOBE AIR 149
Localización de aplicaciones de AIR
De forma predeterminada, AIR HTML Localizer utiliza "local_" como prefijo para los atributos que definen las
opciones de localización para un elemento. Por ejemplo, el atributo local_innerHTML define el nombre del paquete
y recurso que se utiliza para el valor innerHTML del siguiente elemento input:
<p local_innerHTML="default.greeting" />
El método setLocalAttributePrefix() del objeto Localizer permite utilizar otro prefijo de atributo en lugar de
"local_". Este método estático utiliza un parámetro, que es la cadena de caracteres que se desea utilizar como prefijo
de atributo. En el siguiente ejemplo, el código define la arquitectura de localización para que utilice "loc_" como prefijo
de atributo:
air.Localizer.localizer.setLocalAttributePrefix("loc_");
Se puede personalizar el prefijo de atributo que utiliza la arquitectura de localización. Puede ser conveniente
personalizar el prefijo si el valor predeterminado ("local_") está en conflicto con el nombre de otro atributo que se
utilice en el código. Cuando llame a este método, asegúrese de utilizar caracteres válidos para los atributos de HTML.
(Por ejemplo, el valor no puede contener un carácter de espacio en blanco).
Para obtener más información sobre el uso de atributos de localización en elementos HTML, consulte “Actualización
de los elementos DOM con contenido localizado” en la página 146.
Las opciones de directorio de paquetes y prefijo de atributo no persisten entre distintas sesiones de la aplicación. Si
utiliza opciones personalizadas para el directorio de paquetes o el prefijo de atributo, asegúrese de configurarlas cada
vez que inicie la aplicación.
Parámetro Descripción
bundleName El paquete que contiene el recurso. Es el nombre del archivo de propiedades sin
la extensión .properties. Por ejemplo: si este parámetro está definido en
"alerts", el código del Localizer busca en archivos de localización que tengan
el nombre alerts.properties.
La arquitectura de localización puede actualizar los atributos marcados del DOM de HTML. Hay también otras formas
de utilizar cadenas localizadas. Por ejemplo, se puede utilizar una cadena de caracteres en HTML generado de forma
dinámica o como valor de parámetro en una llamada a una función. En el siguiente ejemplo, el código llama a la
función alert() con la cadena de caracteres definida en el recurso error114 del archivo de propiedades
predeterminadas de la configuración regional fr_FR:
alert(air.Localizer.localizer.getString("default", "error114", null, "fr_FR"));
air.Localizerlocalizer.addEventListener(air.Localizer.RESOURCE_NOT_FOUND, rnfHandler);
air.Localizerlocalizer.addEventListener(air.Localizer.BUNDLE_NOT_FOUND, bnfHandler);
var str = air.Localizer.localizer.getString("default", "error114", null, "fr_FR");
function rnfHandler(event)
{
alert(event.bundleName + ": " + event.resourceName + ":." + event.locale);
}
function bnfHandler(event)
{
alert(event.bundleName + ":." + event.locale);
}
El método getResourceBundle() del objeto Localizer devuelve un paquete especificado para una configuración
regional determinada. El valor devuelto del método es un objeto con propiedades que coinciden con las claves del
paquete. (Si la aplicación no puede encontrar el paquete especificado, el método devuelve null.)
El método adopta dos parámetros: locale y bundleName.
Parámetro Descripción
Por ejemplo, el siguiente código llama al método document.write() para cargar el paquete predeterminado para la
configuración regional fr. A continuación llama al método document.write() para escribir valores de las claves str1
y str2 en ese paquete:
var aboutWin = window.open();
var bundle = localizer.getResourceBundle("fr", "default");
aboutWin.document.write(bundle.str1);
aboutWin.document.write("<br/>");
aboutWin.document.write(bundle.str2);
aboutWin.document.write("<br/>");
Parámetro Descripción
<html>
<body>Hello, {0}. You have {1} new messages.</body>
</html>
<html>
<body>Hello, Raúl. You have 4 new messages. </body>
</html>
En el siguiente ejemplo, el código llama al método document.write() utilizando el contenido del archivo about.html
file de la configuración regional fr:
var aboutWin = window.open();
var aboutHtml = localizer.getFile("about.html", null, "fr");
aboutWin.document.close();
aboutWin.document.write(aboutHtml);