Le estensioni native per Adobe AIR forniscono le API di ActionScript che consentono di accedere a funzionalità specifiche del dispositivo programmate nel codice nativo. Gli sviluppatori di estensioni native talvolta collaborano con i produttori di dispositivi e talvolta con sviluppatori di terze parti.
Se state sviluppando un'estensione nativa, consultate
Developing Native Extensions for Adobe AIR
(Sviluppo di estensioni native per Adobe AIR).
Un'estensione nativa è una combinazione di:
-
Classi ActionScript
-
Codice nativo
Tuttavia, in qualità di sviluppatori di applicazioni AIR che impiegano estensioni native, lavorerete solo con le classi di ActionScript.
Le estensioni native sono utili nelle seguenti situazioni:
-
L'implementazione del codice nativo fornisce accesso alle funzionalità specifiche della piattaforma. Queste funzionalità specifiche della piattaforma non sono disponibili nelle classi di ActionScript integrate e non è possibile implementarle nelle classi di ActionScript specifiche dell'applicazione. L'implementazione del codice nativo è in grado di fornire tali funzionalità in quanto ha accesso a software e hardware specifici del dispositivo.
-
Un'implementazione del codice nativo può talvolta risultare più veloce di un'implementazione che usa solo ActionScript.
-
L'implementazione del codice nativo può fornire ad ActionScript l'accesso a codice nativo precedente.
Alcuni esempi di estensioni native si trovano nel Centro per sviluppatori Adobe. Ad esempio, un'estensione nativa fornisce alle applicazioni AIR l'accesso alla funzionalità di vibrazione di Android. Consultate
Native extensions for Adobe AIR
(Estensioni native per Adobe AIR).
File ANE (AIR Native Extension)
Quando impacchettano le estensioni native, gli sviluppatori creano dei file ANE. I file ANE sono file di archivio che contengono le librerie e le risorse necessarie per l'estensione nativa.
Tenete presente che per alcuni dispositivi il file ANE contiene la libreria dei codici nativi impiegati dall'estensione nativa. Tuttavia, per i restanti dispositivi, la libreria dei codici nativi è installata all'interno del dispositivo. In alcuni casi, l'estensione nativa non ha alcun codice nativo per un particolare dispositivo e viene implementata solo con ActionScript.
In qualità di sviluppatori di applicazioni AIR, potete utilizzare il file ANE come segue:
-
Inserite il file ANE nel percorso di libreria dell'applicazione, esattamente come inserite un file SWC nel percorso di libreria. Questa operazione consente all'applicazione di fare riferimento alle classi ActionScript dell'estensione.
Nota:
durante la compilazione dell'applicazione, accertatevi di utilizzare i collegamenti dinamici al file ANE. Se utilizzate Flash Builder, specificate External nel pannello ActionScript Builder Path Properties; se invece utilizzate la riga di comando, digitate -external-library-path.
-
Inserite il file ANE nell'applicazione AIR.
Estensioni native e la classe ActionScript NativeProcess
ActionScript 3.0 fornisce la classe NativeProcess, che consente a un'applicazione AIR di eseguire processi nativi nel sistema operativo host. Questa funzionalità è simile alle estensioni native, che consentono l'accesso a funzioni e librerie specifiche della piattaforma. Quando dovete decidere se utilizzare la classe NativeProcess o un'estensione nativa, considerate quanto segue:
-
Solo il profilo AIR
extendedDesktop
supporta la classe NativeProcess. Di conseguenza, per le applicazioni con i profili AIR
mobileDevice
e
extendedMobileDevice
, le estensioni native sono la sola scelta possibile.
-
Gli sviluppatori di estensioni native spesso forniscono implementazioni native per varie piattaforme, tuttavia l'API di ActionScript che forniscono è generalmente la stessa per tutte le piattaforme. Se si usa la classe NativeProcess, il codice ActionScript per avviare il processo nativo può variare da piattaforma a piattaforma.
-
La classe NativeProcess avvia un processo separato, mentre un'estensione nativa esegue lo stesso processo dell'applicazione AIR. Di conseguenza, se avete problemi di blocco del codice, l'impiego della classe NativeProcess è meno rischioso. Tuttavia, un processo separato potrebbe implicare l'implementazione di una gestione delle comunicazioni tra processi.
Estensioni native e librerie delle classi ActionScript (file SWC)
Un file SWC è una libreria delle classi ActionScript in formato di archivio. Il file SWC contiene un file SWF e altri file di risorse. Il file SWC è un sistema pratico per condividere classi di ActionScript, anziché codice ActionScript individuale e file di risorse.
Un pacchetto di estensioni native è un file ANE. Come il file SWC, anche il file ANE è una libreria di classi di ActionScript contenente un file SWF e altri file di risorse in formato di archivio. Tuttavia, la differenza sostanziale tra un file ANE e un file SWC è che solo il file ANE può contenere una libreria di codici nativi.
Nota:
durante la compilazione dell'applicazione, accertatevi di utilizzare i collegamenti dinamici al file ANE. Se utilizzate Flash Builder, specificate External nel pannello ActionScript Builder Path Properties; se invece utilizzate la riga di comando, digitate -external-library-path.
Dispositivi supportati
A partire da AIR 3, potete usare le estensioni native nelle applicazioni per i seguenti dispositivi:
-
Dispositivi Android, a partire da Android 2.2
-
Dispositivi iOS, a partire da iOS 4.0
-
iOS Simulator, a partire da AIR 3.3
-
Blackberry PlayBook
-
Dispositivi desktop Windows che supportano AIR 3.0
-
Dispositivi desktop Mac OS X che supportano AIR 3.0
Spesso, una stessa estensione nativa può essere destinata a più piattaforme. Il file ANE dell'estensione contiene librerie native e di ActionScript per ogni piattaforma supportata. In genere, le librerie di ActionScript presentano le stesse interfacce pubbliche per tutte le piattaforme. Le librerie native sono necessariamente differenti.
Talvolta un'estensione nativa supporta una piattaforma predefinita. L'implementazione della piattaforma predefinita presenta solo codice ActionScript e nessun codice nativo. Se avete confezionato un'applicazione per una piattaforma non specificamente supportata dall'estensione, l'applicazione userà l'implementazione predefinita quando viene eseguita. Ad esempio, prendete in considerazione un'estensione che fornisce una funzione applicabile unicamente a dispositivi mobili. L'estensione può anche fornire un'implementazione predefinita che un'applicazione desktop può usare per simulare la funzione.
Profili dispositivo supportati
I seguenti profili AIR supportano le estensioni native:
-
extendedDesktop
, a partire da AIR 3.0
-
mobileDevice
, a partire da AIR 3.0
-
extendedMobileDevice
, a partire da AIR 3.0
Elenco delle operazioni da eseguire per utilizzare un'estensione nativa
Per utilizzare un'estensione nativa nella vostra applicazione, dovete eseguire le seguenti operazioni:
-
Dichiarare l'estensione nel file descrittore dell'applicazione.
-
Includere il file ANE nel percorso di libreria dell'applicazione.
-
Creare il pacchetto dell'applicazione.
Dichiarazione dell'estensione nel file descrittore dell'applicazione
Tutte le applicazioni AIR presentano un file descrittore dell'applicazione. Quando un'applicazione usa un'estensione nativa, il file descrittore dell'applicazione include l'elemento
<extensions>
. Ad esempio:
<extensions>
<extensionID>com.example.Extension1</extensionID>
<extensionID>com.example.Extension2</extensionID>
</extensions>
L'elemento
extensionID
ha lo stesso valore dell'elemento
id
nel file descrittore dell'estensione. Quest'ultimo è un file XML denominato extension.xml, impacchettato nel file ANE. Potete usare uno strumento di estrazione archivi per analizzare il file extension.xml.
Inserimento del file ANE nel percorso di libreria dell'applicazione
Per compilare un'applicazione che impiega un'estensione, dovete includere il file ANE nel percorso di libreria.
Uso del file ANE con Flash Builder
Se l'applicazione fa uso di un'estensione nativa, includete il file ANE dell'estensione nativa nel percorso di libreria. Quindi, utilizzate Flash Builder per compilare il codice ActionScript.
Effettuate i passaggi seguenti (viene usato Flash Builder 4.5.1):
-
Cambiate l'estensione del nome del file ANE da .ane a .swc. Questo passaggio è necessario per consentire a Flash Builder di trovare il file.
-
Selezionate Project > Properties nel progetto Flash Builder.
-
Selezionate Flex Build Path nella finestra di dialogo Properties.
-
Nella scheda Library Path, selezionate Add SWC...
-
Individuate il file SWC desiderato e selezionate Open.
-
Selezionate OK nella finestra di dialogo Add SWC...
Il file ANE ora appare nella scheda Library Path della finestra di dialogo Properties.
-
Espandete la voce corrispondente al file SWC. Fate doppio clic su Link Type per aprire la finestra di dialogo Library Path Item Options.
-
Nella finestra di dialogo Library Path Item Options, cambiate l'impostazione di Link Type in External.
Ora potete compilare l'applicazione selezionando, ad esempio, Project > Build Project.
Uso del file ANE con Flash Professional
Se l'applicazione fa uso di un'estensione nativa, includete il file ANE dell'estensione nativa nel percorso di libreria. Quindi, utilizzate Flash Professional CS5.5 per compilare il codice ActionScript. Procedete nel modo seguente:
-
Cambiate l'estensione del nome del file ANE da .ane a .swc. Questo passaggio è necessario per consentire a Flash Professional di trovare il file.
-
Selezionate File > Impostazioni ActionScript nel file FLA.
-
Selezionate la scheda Percorso libreria nella finestra di dialogo Impostazioni avanzate ActionScript 3.0.
-
Fate clic sul pulsante Specifica file SWC.
-
Individuate il file SWC desiderato e selezionate Apri.
Il file SWC ora appare nella scheda Percorso libreria della finestra di dialogo Impostazioni avanzate ActionScript 3.0.
-
Con il file SWC selezionato, selezionate il pulsante Imposta opzioni di concatenamento per una libreria.
-
Nella finestra di dialogo Opzioni elemento percorso di libreria, cambiate l'impostazione di Tipo di collegamento in Esterno.
Creazione del pacchetto di un'applicazione che usa estensioni native
Utilizzate ADT per creare il pacchetto di un'applicazione che usa estensioni native. Non potete creare il pacchetto dell'applicazione utilizzando Flash Professional CS5.5 o Flash Builder 4.5.1.
Per maggiori informazioni sull'uso di ADT, consultate il documento
AIR Developer Tool (ADT)
.
Ad esempio, il seguente comando ADT consente di creare un file DMG (un file di installazione nativo per Mac OS X) per un'applicazione che usa estensioni native:
adt -package
-storetype pkcs12
-keystore myCert.pfx
-target native
myApp.dmg
application.xml
index.html resources
-extdir extensionsDir
Il seguente comando consente di creare un pacchetto APK per un dispositivo Android:
adt -package
-target apk
-storetype pkcs12 -keystore ../codesign.p12
myApp.apk
myApp-app.xml
myApp.swf icons
-extdir extensionsDir
Il seguente comando consente di creare un pacchetto iOS per un'applicazione di iPhone:
adt -package
-target ipa-ad-hoc
-storetype pkcs12 -keystore ../AppleDistribution.p12
-provisioning-profile AppleDistribution.mobileprofile
myApp.ipa
myApp-app.xml
myApp.swf icons Default.png
-extdir extensionsDir
Tenete presente quanto segue:
-
Utilizzate un tipo di pacchetto di installazione nativo.
-
Specificate la directory dell'estensione.
-
Verificate che il file ANE supporti il dispositivo di destinazione dell'applicazione.
Uso di un tipo di pacchetto di installazione nativo
Il pacchetto dell'applicazione deve essere un programma di installazione nativo. Non potete creare un pacchetto AIR (un pacchetto .air) multipiattaforma per un'applicazione che usa estensioni native, in quanto le estensioni native generalmente contengono codice nativo. Tuttavia, in genere le estensioni native supportano più piattaforme native con le stesse API di ActionScript. In questi casi, potete usare lo stesso file ANE in pacchetti di installazione nativi differenti.
La tabella che segue riepiloga i valori da usare per l'opzione
-target
del comando ADT:
Piattaforma di destinazione dell'applicazione
|
-target
|
Dispositivi desktop Mac OS X o Windows
|
-target native
-target bundle
|
Android
|
-target apk
o altre destinazioni per pacchetti Android
|
iOS
|
-target ipa-ad-hoc
o altre destinazioni per pacchetti iOS
|
iOS Simulator
|
-target ipa-test-interpreter-simulator
-target ipa-debug-interpreter-simulator
|
Indicazione della directory dell'estensione
Utilizzate l'opzione ADT
-extdir
per indicare ad ADT la directory che contiene le estensioni native (file ANE).
Per maggiori dettagli su questa opzione, consultate
Opzioni per file e percorsi
.
Verifica che il file ANE supporti il dispositivo di destinazione dell'applicazione
Quando fornisce un file ANE, lo sviluppatore dell'estensione nativa vi informa sulle piattaforme supportate dall'estensione. Potete anche usare uno strumento di estrazione archivio per analizzare il contenuto del file ANE. I file estratti includono una directory per ciascuna piattaforma supportata.
Conoscere quali piattaforme sono supportate dall'estensione è importante per la creazione del pacchetto dell'applicazione che impiega il file ANE. Considerate le seguenti regole:
-
Per creare un pacchetto di applicazione Android, è necessario che il file ANE includa la piattaforma
Android-ARM
. In alternativa, è necessario che il file ANE includa la piattaforma predefinita e almeno un'altra piattaforma.
-
Per creare un pacchetto di applicazione iOS, è necessario che il file ANE includa la piattaforma
iPhone-ARM
. In alternativa, è necessario che il file ANE includa la piattaforma predefinita e almeno un'altra piattaforma.
-
Per creare un pacchetto di applicazione iOS Simulator, è necessario che il file ANE includa la piattaforma
iPhone-x86
.
-
Per creare un pacchetto di applicazione Mac OS X, è necessario che il file ANE includa la piattaforma
MacOS-x86
. In alternativa, è necessario che il file ANE includa la piattaforma predefinita e almeno un'altra piattaforma.
-
Per creare un pacchetto di applicazione Windows, è necessario che il file ANE includa la piattaforma
Windows-x86
. In alternativa, è necessario che il file ANE includa la piattaforma predefinita e almeno un'altra piattaforma.
|
|
|