Verwenden von nativen Erweiterungen für Adobe AIR

Native Erweiterungen für Adobe AIR stellen ActionScript-APIs bereit, mit denen Sie auf gerätespezifische Funktionen zugreifen können, die in nativem Code programmiert wurden. Entwickler von nativen Erweiterungen arbeiten manchmal mit Geräteherstellern, sind manchmal aber auch Entwickler für Drittanbieter.

Wenn Sie eine native Erweiterung entwickeln, lesen Sie Developing Native Extensions for Adobe AIR .

Eine native Erweiterung ist eine Kombination aus:

  • ActionScript-Klassen.

  • Nativem Code.

Wenn Sie als Entwickler von AIR-Anwendungen native Erweiterungen verwenden, arbeiten Sie jedoch ausschließlich mit den ActionScript-Klassen.

Native Erweiterungen sind in folgenden Situationen nützlich:

  • Die Implementierung von nativem Code ermöglicht den Zugriff auf plattformspezifische Funktionen. Diese plattformspezifischen Funktionen sind in den integrierten ActionScript-Klassen nicht verfügbar und es ist nicht möglich, sie in anwendungsspezifische ActionScript-Klassen zu implementieren. Das Implementieren von nativem Code kann diese Funktionen bereitstellen, da dieser Code Zugriff auf gerätespezifische Hardware und Software hat.

  • Manchmal ist eine Implementierung von nativem Code schneller als eine Implementierung, die nur ActionScript verwendet.

  • Durch die Implementierung von nativem Code kann ActionScript Zugriff auf nativen Legacy-Code erhalten.

Einige Beispiele für native Erweiterungen finden Sie im Adobe Developer Center. Eine native Anwendung ermöglicht AIR-Anwendungen zum Beispiel den Zugriff auf die Vibrationsfunktion von Android. Siehe Native extensions for Adobe AIR .

ANE-Dateien (AIR Native Extension)

Entwickler von nativen Erweiterungen verpacken eine native Erweiterung in einer ANE-Datei. Eine ANE-Datei ist eine Archivdatei, die die erforderlichen Bibliotheken und Ressourcen für die native Erweiterung enthält.

Beachten Sie, dass die ANE-Datei bei einigen Geräten die native Codebibliothek enthält, die die native Erweiterung verwendet. Bei anderen Geräten dagegen ist die Bibliothek mit dem nativen Code auf dem Gerät installiert. In einigen Fällen hat die native Erweiterung gar keinen nativen Code für ein bestimmtes Gerät; in diesem Fall wird sie nur mit ActionScript implementiert.

Als Entwickler von AIR-Anwendungen verwenden Sie die ANE-Datei folgendermaßen:

  • Beziehen Sie die ANE-Datei auf die gleiche Weise in den Bibliothekspfad der Anwendung ein, wie Sie eine SWC-Datei in den Bibliothekspfad einbeziehen. Diese Vorgehensweise ermöglicht es der Anwendung, auf die ActionScript-Klassen der Erweiterung zu verweisen.

    Hinweis: Achten Sie beim Kompilieren Ihrer Anwendung darauf, für die ANE dynamische Verknüpfungen zu verwenden. Wenn Sie Flash Builder verwenden, geben Sie im Bedienfeld für die ActionScript Builder-Pfadeigenschaften „Extern“ an; wenn Sie die Befehlszeile verwenden, geben Sie „-external-library-path“ an.
  • Verpacken Sie die ANE-Datei mit der AIR-Anwendung.

Native Erweiterung und die ActionScript-Klasse NativeProcess im Vergleich

ActionScript 3.0 stellt eine NativeProcess-Klasse bereit. Mithilfe dieser Klasse kann eine AIR-Anwendung native Prozesse auf dem Host-Betriebssystem ausführen. Diese Fähigkeit ähnelt nativen Erweiterungen, die Zugriff auf plattformspezifische Funktionen und Bibliotheken ermöglichen. Wenn Sie überlegen, ob Sie die NativeProcess-Klasse oder eine native Erweiterung verwenden sollen, beachten Sie Folgendes:

  • Nur das AIR-Profil extendedDesktop unterstützt die NativeProcess-Klasse. Deshalb sind native Erweiterungen die einzige Möglichkeit für Anwendungen mit dem AIR-Profil mobileDevice oder extendedMobileDevice .

  • Entwickler von nativen Erweiterungen stelle häufig native Implementierungen für verschiedene Plattformen bereit; die ActionScript-API, die sie bereitstellen, ist normalerweise jedoch bei allen Plattformen identisch. Wenn die NativeProcess-Klasse verwendet wird, kann der ActionScript-Code zum Starten des nativen Prozesses sich zwischen den verschiedenen Plattformen unterscheiden.

  • Die NativeProcess-Klasse startet einen separaten Prozess, während eine native Erweiterung im selben Prozess wie die AIR-Anwendung ausgeführt wird. Wenn Sie Bedenken wegen Code-Abstürzen haben, ist das Verwenden der NativeProcess-Klasse sicherer. Der separate Prozess bedeutet jedoch, dass Sie möglicherweise die Verarbeitung von Kommunikation zwischen Prozessen implementieren müssen.

Native Erweiterungen und ActionScript-Klassenbibliotheken (SWC-Dateien) im Vergleich

Eine SWC-Datei ist eine ActionScript-Klasse in einem Archivformat. Die SWC-Datei enthält eine SWF-Datei und andere Ressourcendateien. Die SWC-Datei ist eine praktische Möglichkeit, ActionScript-Klassen gemeinsam zu verwenden, anstatt einzelne ActionScript-Code- und Ressourcendateien zu verwenden.

Ein Paket mit einer nativen Erweiterung ist eine ANE-Datei. Wie eine SWC-Datei ist auch eine ANE-Datei eine ActionScript-Klassenbibliothek, die eine SWF-Datei und andere Ressourcendateien im Archivformat enthält. Der wichtigste Unterschied zwischen einer ANE-Datei und einer SWC-Datei besteht darin, dass nur eine ANE-Datei eine Bibliothek mit nativem Code enthalten kann.

Hinweis: Achten Sie beim Kompilieren Ihrer Anwendung darauf, für die ANE-Datei dynamische Verknüpfungen zu verwenden. Wenn Sie Flash Builder verwenden, geben Sie im Bedienfeld für die ActionScript Builder-Pfadeigenschaften „Extern“ an; wenn Sie die Befehlszeile verwenden, geben Sie „-external-library-path“ an.

Unterstützte Geräte

Ab AIR 3 können Sie native Erweiterungen in Anwendungen für die folgenden Geräte verwenden:

  • Android-Geräte ab Android 2.2

  • iOS-Geräte ab iOS 4.0

  • iOS Simulator ab AIR 3.3

  • Blackberry PlayBook

  • Windows-Desktopgeräte, die AIR 3.0 unterstützen

  • Mac OS X-Desktopgeräte, die AIR 3.0 unterstützen

Häufig zielt eine native Erweiterung auf mehrere Plattformen ab. Die ANE-Datei der Erweiterung enthält ActionScript und native Bibliotheken für jede unterstützte Plattform. Normalerweise haben die ActionScript-Bibliotheken dieselben öffentlichen Schnittstellen für alle diese Plattformen. Die nativen Bibliotheken unterscheiden sich jedoch notwendigerweise.

Manchmal unterstützt eine native Erweiterung eine Standardplattform. Die Implementierung der Standardplattform hat nur ActionScript-Code, keinen nativen Code. Wenn Sie eine Anwendung für eine Plattform verpacken, die von der Erweiterung nicht ausdrücklich unterstützt wird, verwendet die Anwendung bei der Ausführung die Standardimplementierung. Denken Sie zum Beispiel an eine Erweiterung, die eine Funktion bereitstellt, die nur für mobile Geräte zutrifft. Die Erweiterung kann auch eine Standardimplementierung bereitstellen, mit der eine Desktopanwendung die Funktion simulieren kann.

Unterstützte Geräteprofile

Die folgenden AIR-Profile unterstützen native Erweiterungen:

  • extendedDesktop ab AIR 3.0

  • mobileDevice ab AIR 3.0

  • extendedMobileDevice ab AIR 3.0

Aufgabenliste zur Verwendung einer nativen Erweiterung

Führen Sie die folgenden Aufgaben aus, um eine native Erweiterung in Ihrer Anwendung zu verwenden:

  1. Deklarieren Sie die Erweiterung in Ihrer Anwendungsdeskriptordatei.

  2. Schließen Sie die ANE-Datei in den Bibliothekspfad Ihrer Anwendung ein.

  3. Verpacken Sie die Anwendung.

Deklarieren der Erweiterung in der Anwendungsdeskriptordatei

Alle AIR-Anwendungen haben eine Anwendungsdeskriptordatei. Wenn eine Anwendung eine native Erweiterung verwendet, enthält die Anwendungsdeskriptordatei ein <extensions> -Element. Zum Beispiel:

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

Das extensionID -Element hat denselben Wert wie das id -Element in der Erweiterungsdeskriptordatei. Die Erweiterungsdeskriptordatei ist eine XML-Datei mit dem Namen „extension.xml“. Sie ist in der ANE-Datei verpackt. Sie können ein Programm zum Extrahieren von Archiven verwenden, um sich die Datei „extension.xml“ anzusehen.

Einschließen der ANE-Datei in den Bibliothekspfad der Anwendung

Um eine Anwendung zu kompilieren, die eine native Erweiterung verwendet, schließen Sie die ANE-Datei in den Bibliothekspfad ein.

Verwenden der ANE-Datei mit Flash Builder

Wenn Ihre Anwendung eine native Erweiterung verwendet, schließen Sie die ANE-Datei für die native Erweiterung in den Bibliothekspfad mit ein. Sie können den ActionScript-Code dann mit Flash Builder kompilieren.

Führen Sie die folgenden Schritte aus, bei denen Flash Builder 4.5.1 verwendet wird:

  1. Ändern Sie die Dateinamenerweiterung der ANE-Datei von .ane zu .swc. Dieser Schritt ist erforderlich, damit Flash Builder die Datei finden kann.

  2. Wählen Sie in Ihrem Flash Builder-Projekt „Project“ > „Properties“ (Projekt > Eigenschaften).

  3. Wählen Sie im Eigenschaftendialogfeld den „Flex Build Path“.

  4. Wählen Sie auf der Registerkarte „Library Path“ (Bibliothekspfad) „Add SWC...“ (SWC-Datei hinzufügen).

  5. Navigieren Sie zur SWC-Datei und wählen Sie „Open“ (Öffnen).

  6. Wählen Sie im Dialogfeld „Add SWC...“ (SWC-Datei hinzufügen) „OK“.

    Die ANE-Datei wird jetzt auf der Registerkarte „Library Path“ (Bibliothekspfad) des Eigenschaftendialogfelds aufgeführt.

  7. Erweitern Sie den Eintrag für die SWC-Datei. Doppelklicken Sie auf „Link Type“ (Verknüpfungstyp), um das Dialogfeld „Library Path Item Options“ (Optionen für Bibliothekspfadelement) zu öffnen.

  8. Ändern Sie im Dialogfeld „Optionen für Bibliothekspfadelement“ den „Verknüpfungstyp“ zu „Extern“.

Sie können die Anwendung jetzt kompilieren, indem Sie zum Beispiel „Project“ > „Build Project“ (Projekt > Projekt erstellen) wählen.

Verwenden der ANE-Datei mit Flash Professional

Wenn Ihre Anwendung eine native Erweiterung verwendet, schließen Sie die ANE-Datei für die native Erweiterung in den Bibliothekspfad mit ein. Sie können den ActionScript-Code dann mit Flash Professional CS5.5 kompilieren. Gehen Sie folgendermaßen vor:

  1. Ändern Sie die Dateinamenerweiterung der ANE-Datei von .ane zu .swc. Dieser Schritt ist erforderlich, damit Flash Professional die Datei finden kann.

  2. Wählen Sie in der FLA-Datei „Datei“ > „ActionScript-Einstellungen“.

  3. Wählen Sie im Dialogfeld „Erweiterte ActionScript 3.0-Einstellungen“ die Registerkarte „Bibliothekspfad“.

  4. Wählen Sie die Schaltfläche „Zur SWC-Datei navigieren“.

  5. Navigieren Sie zur SWC-Datei und wählen Sie „Öffnen“.

    Die SWC-Datei wird jetzt auf der Registerkarte „Bibliothekspfad des Dialogfelds „Erweiterte ActionScript 3.0-Einstellungen“ angezeigt.

  6. Während die SWC-Datei ausgewählt ist, wählen Sie die Schaltfläche „Verknüpfungsoptionen für eine Bibliothek festlegen“.

  7. Ändern Sie im Dialogfeld „Optionen für Bibliothekspfadelement“ den „Verknüpfungstyp“ zu „Extern“.

Verpacken einer Anwendung, die native Erweiterungen verwendet

Verpacken Sie Anwendungen, die native Erweiterungen verwenden, mit ADT. Sie können die Anwendung nicht mit Flash Professional CS5.5 oder Flash Builder 4.5.1 verpacken.

Ausführliche Informationen zur Verwendung von ADT finden Sie unter AIR Developer Tool (ADT) .

Der folgende ADT-Befehl erstellt zum Beispiel eine DMG-Datei (ein natives Installationsprogramm für Mac OS X) für eine Anwendung, die native Erweiterungen verwendet:

adt -package 
    -storetype pkcs12 
    -keystore myCert.pfx 
    -target native 
    myApp.dmg 
    application.xml 
    index.html resources 
    -extdir extensionsDir
Der folgende Befehl erstellt ein APK-Paket für ein Android-Gerät:
adt -package 
    -target apk 
    -storetype pkcs12 -keystore ../codesign.p12 
    myApp.apk 
    myApp-app.xml 
    myApp.swf icons 
    -extdir extensionsDir

Der folgende Befehl erstellt ein iOS-Paket für eine iPhone-Anwendung:

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

Beachten Sie Folgendes:

  • Verwenden Sie einen nativen Installerpakettyp.

  • Legen Sie den Erweiterungsordner fest.

  • Stellen Sie sicher, dass die ANE-Datei das Zielgerät der Anwendung unterstützt.

Verwenden eines nativen Installerpakettyps

Das Anwendungspaket muss ein natives Installationsprogramm sein. Sie können kein plattformübergreifendes AIR-Paket (.air-Paket) für eine Anwendung erstellen, die eine native Erweiterung verwendet, da native Erweiterungen normalerweise nativen Code enthalten. Im Allgemeinen unterstützt eine native Erweiterung jedoch mehrere native Plattformen mit denselben ActionScript-APIs. In diesem Fall können Sie dieselbe ANE-Datei in verschiedenen nativen Installerpaketen verwenden.

In der folgenden Tabelle sind die Werte aufgeführt, die für die -target -Option des ADT-Befehls verwendet werden:

Zielplattform der Anwendung

-target

Desktopgeräte mit Mac OS X oder Windows

-target native

-target bundle

Android

-target apk

oder andere Android-Paketziele

iOS

-target ipa-ad-hoc

oder andere iOS-Paketziele

iOS Simulator

-target ipa-test-interpreter-simulator

-target ipa-debug-interpreter-simulator

Festlegen des Erweiterungsordners

Teilen Sie ADT mit der -extdir -Option den Ordner mit, der die nativen Erweiterungen (ANE-Dateien) enthält.

Ausführliche Informationen zu dieser Option finden Sie unter Datei- und Pfadoptionen .

Sicherstellen, dass die ANE-Datei das Zielgerät der Anwendung unterstützt

Wenn Sie eine ANE-Datei bereitstellen, informiert Sie der Entwickler der nativen Erweiterung, welche Plattformen die Erweiterung unterstützt. Sie können sich den Inhalt der ANE-Datei auch mit einem Dekomprimierungsprogramm für Archive ansehen. Die extrahierten Dateien enthalten einen Ordner für jede unterstützte Plattform.

Sie müssen wissen, welche Plattformen von der Erweiterung unterstützt werden, wenn Sie die Anwendung, die die ANE-Datei verwendet, verpacken. Berücksichtigen Sie die folgenden Regeln:

  • Um ein Android-Anwendungspaket zu erstellen, muss die ANE-Datei die Android-ARM -Plattform einschließen. Alternativ dazu muss die ANE-Datei die Standardplattform und mindestens eine weitere Plattform einschließen.

  • Um ein iOS-Anwendungspaket zu erstellen, muss die ANE-Datei die iPhone-ARM -Plattform einschließen. Alternativ dazu muss die ANE-Datei die Standardplattform und mindestens eine weitere Plattform einschließen.

  • Um ein iOS Simulator-Anwendungspaket zu erstellen, muss die ANE-Datei die iPhone-x86 -Plattform einschließen.

  • Um ein Mac OS X-Anwendungspaket zu erstellen, muss die ANE-Datei die MacOS-x86 -Plattform einschließen. Alternativ dazu muss die ANE-Datei die Standardplattform und mindestens eine weitere Plattform einschließen.

  • Um ein Windows-Anwendungspaket zu erstellen, muss die ANE-Datei die Windows-x86 -Plattform einschließen. Alternativ dazu muss die ANE-Datei die Standardplattform und mindestens eine weitere Plattform einschließen.