Korzystanie z rozszerzeń natywnych dla środowiska Adobe AIR

Rozszerzenia natywne dla środowiska Adobe AIR oferują interfejsy API języka ActionScript zapewniające dostęp do funkcji specyficznych dla urządzeń programowanych przy użyciu kodu natywnego. Programiści rozszerzeń natywnych czasami współpracują z producentami urządzeń. Mogą być również pracować w innych firmach.

Jeśli programujesz rozszerzenie natywne, zobacz Programowanie rozszerzeń natywnych dla środowiska Adobe AIR .

Rozszerzenie natywne jest połączeniem następujących elementów:

  • Klasy ActionScript

  • Kod natywny

Programiści aplikacji AIR korzystający z rozszerzeń natywnych pracują tylko z klasami ActionScript.

Rozszerzenia natywne są przydatne w następujących sytuacjach:

  • Implementacja w kodzie natywnym zapewnia dostęp do funkcji specyficznych dla platformy. Te funkcje specyficzne dla platformy nie są dostępne we wbudowanych klasach ActionScript i nie można ich implementować w klasach ActionScript specyficznych dla aplikacji. Implementacja w kodzie natywnym może zapewnić taką funkcjonalność, ponieważ ma dostęp do sprzętu i oprogramowania specyficznego dla urządzenia.

  • Implementacja w kodzie natywnym może czasami działać szybciej niż implementacja korzystająca wyłącznie z języka ActionScript.

  • Implementacja w kodzie natywnym może zapewnić dostęp do starszego kodu natywnego za pośrednictwem języka ActionScript.

Niektóre przykłady rozszerzeń natywnych są dostępne w Centrum programistów Adobe. Na przykład jedno z rozszerzeń natywnych zapewnia aplikacjom AIR dostęp do funkcji wibracji w systemie Android. Zobacz Rozszerzenia natywne dla środowiska Adobe AIR .

Pliki rozszerzeń natywnych środowiska AIR (ANE)

Programiści rozszerzeń natywnych umieszczają rozszerzenia natywne w plikach ANE. Plik ANE jest plikiem archiwum zawierającym wszystkie niezbędne biblioteki i zasoby dla rozszerzenia natywnego.

W przypadku niektórych urządzeń plik ANE zawiera bibliotekę kodu natywnego używaną przez rozszerzenie natywne. Natomiast w przypadku innych urządzeń biblioteka kodu natywnego jest zainstalowana na urządzeniu. Czasami rozszerzenie natywne w ogóle nie zawiera kodu natywnego dla określonego urządzenia, lecz jest zaimplementowane wyłącznie przy użyciu kodu ActionScript.

Programista aplikacji AIR używa pliku ANE w następujący sposób:

  • Umieszcza plik ANE w ścieżce biblioteki aplikacji, tak samo jak w przypadku dołączania pliku SWC w ścieżce biblioteki. Dzięki temu aplikacja może odnosić się do klas ActionScript w rozszerzeniu.

    Uwaga: Podczas kompilowania aplikacji należy pamiętać o tym, aby w pliku ANE używać łączenia dynamicznego. Jeśli jest używany program Flash Builder, w panelu właściwości ścieżki kodu ActionScript w programie Builder należy wybrać opcję Zewnętrzne. Jeśli jest używany wiersz poleceń, należy podać opcję -external-library-path.
  • Pakuje plik ANE razem z aplikacją AIR.

Rozszerzenia natywne a klasa NativeProcess języka ActionScript

Język ActionScript 3.0 udostępnia klasę NativeProcess. Ta klasa umożliwia aplikacji AIR uruchamianie procesów natywnych w systemie operacyjnym komputera. Ta możliwość jest podobna do działania rozszerzeń natywnych, które zapewniają dostęp do funkcji i bibliotek specyficznych dla platformy. Podejmując decyzję o użyciu klasy NativeProcess lub rozszerzenia natywnego, należy rozważyć następujące kwestie:

  • Tylko profil AIR extendedDesktop obsługuje klasę NativeProcess. Dlatego w aplikacjach korzystających z profilów AIR mobileDevice i extendedMobileDevice można stosować tylko rozszerzenia natywne.

  • Programiści rozszerzeń natywnych często dostarczają implementacje natywne dla różnych platform, ale oferowany przez nich interfejs API języka ActionScript jest zazwyczaj taki sam na wszystkich platformach. Jeśli jest używana klasa NativeProcess, kod ActionScript do uruchamiania procesu natywnego może mieć różną postać na poszczególnych platformach.

  • Klasa NativeProcess uruchamia osobny proces, natomiast rozszerzenie natywne działa w tym samym procesie co aplikacja AIR. Dlatego w przypadku obaw dotyczących awarii kodu użycie klasy NativeProcess jest bezpieczniejsze. Jednak stosowanie osobnego procesu może wymagać zaimplementowania obsługi komunikacji między procesami.

Rozszerzenia natywne a biblioteki klas ActionScript (pliki SWC)

Plik SWC to biblioteka klas ActionScript formacie archiwum. Zawiera on plik SWF i inne pliki zasobów. Przy użyciu pliku SWC można wygodnie udostępnić klasy ActionScript zamiast poszczególnych plików kodu ActionScript i zasobów.

Pakiet rozszerzenia natywnego jest plikiem ANE. Podobnie jak plik SWC, plik ANE również jest biblioteką klas ActionScript zawierającą plik SWF i inne pliki w formacie archiwum. Najważniejszą różnicą między plikami ANE i SWC jest to, że tylko plik ANE może zawierać bibliotekę kodu natywnego.

Uwaga: Podczas kompilowania aplikacji należy pamiętać o tym, aby w pliku ANE używać łączenia dynamicznego. Jeśli jest używany program Flash Builder, w panelu właściwości ścieżki kodu ActionScript w programie Builder należy wybrać opcję Zewnętrzne. Jeśli jest używany wiersz poleceń, należy podać opcję -external-library-path.

Obsługiwane urządzenia

Począwszy od środowiska AIR 3, można korzystać z rozszerzeń natywnych w aplikacjach dla następujących urządzeń:

  • Urządzenia z systemem Android (od wersji Android 2.2)

  • Urządzenia z systemem iOS (od wersji iOS 4.0)

  • Symulator systemu iOS (od wersji AIR 3.3)

  • Urządzenia BlackBerry PlayBook

  • Komputery z systemem Windows obsługujące środowisko AIR 3.0

  • Komputery z systemem Mac OS X obsługujące środowisko AIR 3.0

W wielu przypadkach to samo rozszerzenie natywne jest przeznaczone dla kilku platform. Plik ANE rozszerzenia zawiera kod ActionScript i biblioteki natywne dla każdej obsługiwanej platformy. Zazwyczaj biblioteki ActionScript mają takie same interfejsy publiczne dla wszystkich tych platform. Biblioteki natywne z konieczności różnią się.

Czasami rozszerzenie natywne obsługuje platformę domyślną. Implementacja dla platformy domyślnej zawiera tylko kod ActionScript, bez kodu natywnego. Jeśli zostanie utworzony pakiet z aplikacją dla platformy nieobsługiwanej przez dane rozszerzenie, podczas uruchamiania aplikacji będzie używana implementacja domyślna. Rozszerzenie może na przykład udostępniać funkcję dotyczącą tylko urządzeń przenośnych. Takie rozszerzenie może również oferować domyślną implementację pozwalającą symulować tę funkcję w aplikacji dla komputerów.

Obsługiwane profile urządzeń

Następujące profile środowiska AIR obsługują rozszerzenia natywne:

  • extendedDesktop (od wersji AIR 3.0)

  • mobileDevice (od wersji AIR 3.0)

  • extendedMobileDevice (od wersji AIR 3.0)

Lista zadań dotycząca korzystania z rozszerzenia natywnego

Aby korzystać z rozszerzenia natywnego w aplikacji, wykonaj następujące zadania:

  1. Zadeklaruj rozszerzenie w pliku deskryptora aplikacji.

  2. Umieść plik ANE w ścieżce biblioteki aplikacji.

  3. Spakuj aplikację.

Deklarowanie rozszerzenia w pliku deskryptora aplikacji

Wszystkie aplikacje AIR mają plik deskryptora aplikacji. Gdy aplikacja korzysta z rozszerzenia natywnego, plik deskryptora aplikacji zawiera element <extensions> . Na przykład:

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

Element extensionID ma wartość taką samą jak element id w pliku deskryptora rozszerzenia. Plik deskryptora rozszerzenia jest plikiem XML o nazwie extension.xml. Jest on spakowany w pliku ANE. Plik extension.xml można wyświetlić za pomocą narzędzia do wyodrębniania archiwum.

Uwzględnianie pliku ANE w ścieżce biblioteki aplikacji

Aby skompilować aplikację korzystającą z rozszerzenia natywnego, należy umieścić plik ANE w ścieżce biblioteki.

Używanie pliku ANE z programem Flash Builder

Jeśli aplikacja korzysta z rozszerzenia natywnego, w ścieżce biblioteki należy umieścić plik ANE dotyczący tego rozszerzenia. Można wówczas kompilować kod ActionScript za pomocą oprogramowania Flash Builder.

Wykonaj następujące czynności, używając programu Flash Builder 4.5.1:

  1. Zmień rozszerzenie nazwy pliku ANE z ane na swc. Ten krok jest konieczny, aby program Flash Builder mógł znaleźć plik.

  2. W projekcie Flash Builder wybierz opcję Projekt > Właściwości.

  3. W oknie dialogowym Właściwości wybierz ścieżkę kompilacji Flex.

  4. Na karcie Ścieżka biblioteki wybierz opcję Dodaj plik SWC.

  5. Przejdź do pliku SWC i wybierz opcję Otwórz.

  6. Kliknij przycisk OK w oknie dialogowym dodawania pliku SWC.

    Plik ANE zostanie wyświetlony na karcie Ścieżka biblioteki okna dialogowego Właściwości.

  7. Rozwiń pozycję pliku SWC. Kliknij dwukrotnie opcję Typ łącza w celu otwarcia okna dialogowego Opcje elementu ścieżki biblioteki.

  8. W oknie dialogowym Opcje elementu ścieżki biblioteki zmień Typ łącza na Zewnętrzne.

Aplikację można teraz skompilować na przykład za pomocą opcji Projekt > Utwórz projekt.

Używanie pliku ANE z programem Flash Professional

Jeśli aplikacja korzysta z rozszerzenia natywnego, w ścieżce biblioteki należy umieścić plik ANE dotyczący tego rozszerzenia. Można wówczas kompilować kod ActionScript za pomocą oprogramowania Flash Professional CS5.5. W tym celu należy wykonać następujące czynności:

  1. Zmień rozszerzenie nazwy pliku ANE z ane na swc. Ten krok jest konieczny, aby program Flash Professional mógł znaleźć plik.

  2. W pliku FLA wybierz opcję Plik > Ustawienia ActionScript.

  3. Wybierz kartę Ścieżka biblioteki w oknie dialogowym Zaawansowane ustawienia języka ActionScript 3.0.

  4. Naciśnij przycisk Przejdź do pliku SWC.

  5. Przejdź do pliku SWC i wybierz opcję Otwórz.

    Plik SWC jest teraz wyświetlany na karcie Ścieżka biblioteki okna dialogowego Zaawansowane ustawienia języka ActionScript 3.0.

  6. Przy zaznaczonym pliku SWC naciśnij przycisk Wybierz opcje tworzenia połączeń biblioteki.

  7. W oknie dialogowym Opcje elementu ścieżki biblioteki zmień opcję Typ łącza na Zewnętrzne.

Pakowanie aplikacji korzystającej z rozszerzeń natywnych

Za pomocą narzędzia ADT spakuj aplikację korzystającą z rozszerzeń natywnych. Nie można spakować aplikacji za pomocą programu Flash Professional CS5.5 lub Flash Builder 4.5.1.

Szczegółowe informacje o korzystaniu z narzędzia ADT znajdują się na stronie Narzędzie ADT .

Na przykład poniższe polecenie narzędzia ADT powoduje utworzenie pliku DMG (pliku instalatora natywnego dla systemu Mac OS X) dla aplikacji korzystającej z rozszerzeń natywnych:

adt -package 
    -storetype pkcs12 
    -keystore myCert.pfx 
    -target native 
    myApp.dmg 
    application.xml 
    index.html resources 
    -extdir extensionsDir
Następujące polecenie powoduje utworzenie pakietu APK dla urządzenia z systemem Android:
adt -package 
    -target apk 
    -storetype pkcs12 -keystore ../codesign.p12 
    myApp.apk 
    myApp-app.xml 
    myApp.swf icons 
    -extdir extensionsDir

Następujące polecenie powoduje utworzenie pakietu systemu iOS dla aplikacji przeznaczonej dla telefonu 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

Należy zwrócić uwagę na następujące kwestie:

  • Należy użyć typu pakietu instalatora natywnego.

  • Należy określić katalog rozszerzeń.

  • Należy upewnić się, że plik ANE obsługuje urządzenie docelowe aplikacji.

Używanie typu pakietu instalatora natywnego

Pakiet aplikacji musi być przeznaczony dla instalatora natywnego. W przypadku aplikacji korzystającej z rozszerzenia natywnego nie można utworzyć pakietu AIR przeznaczonego dla różnych platform (pakietu z rozszerzeniem air), ponieważ takie rozszerzenia często zawierają kod natywny. Jednak rozszerzenie natywne zazwyczaj obsługuje wiele platform natywnych przy użyciu tych samych interfejsów API języka ActionScript. W takich przypadkach można użyć tego samego pliku ANE w różnych pakietach instalatora natywnego.

Poniższa tabela zawiera podsumowanie wartości, których należy używać dla opcji -target w poleceniu narzędzia ADT:

Platforma docelowa aplikacji

-target

Komputery z systemem Mac OS X lub Windows

-target native

-target bundle

Android

-target apk

(lub inne typy docelowe pakietu Android)

iOS

-target ipa-ad-hoc

(lub inne typy docelowe pakietu iOS)

Symulator systemu iOS

-target ipa-test-interpreter-simulator

-target ipa-debug-interpreter-simulator

Określanie katalogu rozszerzeń

Za pomocą opcji -extdir narzędzia ADT należy wskazać katalog zawierający rozszerzenia natywne (pliki ANE).

Szczegółowe informacje na temat tej opcji zawiera sekcja Opcje plików i ścieżek .

Sprawdzanie, czy plik ANE obsługuje urządzenie docelowe aplikacji

Udostępniając plik ANE, programista rozszerzenia natywnego informuje użytkownika o tym, jakie platformy są przez nie obsługiwane. Można również sprawdzić zawartość pliku ANE za pomocą narzędzia do wyodrębniania archiwum. Struktura wyodrębnionych plików zawiera odpowiedni katalog dla każdej obsługiwanej platformy.

Znajomość platform obsługiwanych przez rozszerzenie jest ważna w przypadku pakowania aplikacji korzystającej z pliku ANE. Należy stosować następujące reguły:

  • W przypadku pakowania aplikacji dla systemu Android plik ANE musi uwzględniać platformę Android-ARM . Innym rozwiązaniem jest uwzględnienie w pliku ANE platformy domyślnej i co najmniej jednej innej platformy.

  • W przypadku pakowania aplikacji dla systemu iOS plik ANE musi uwzględniać platformę iPhone-ARM . Innym rozwiązaniem jest uwzględnienie w pliku ANE platformy domyślnej i co najmniej jednej innej platformy.

  • W przypadku tworzenia pakietu aplikacji dla symulatora systemu iOS plik ANE musi uwzględniać platformę iPhone-x86 .

  • W przypadku pakowania aplikacji dla systemu Mac OS X plik ANE musi uwzględniać platformę MacOS-x86 . Innym rozwiązaniem jest uwzględnienie w pliku ANE platformy domyślnej i co najmniej jednej innej platformy.

  • W przypadku pakowania aplikacji dla systemu Windows plik ANE musi uwzględniać platformę Windows-x86 . Innym rozwiązaniem jest uwzględnienie w pliku ANE platformy domyślnej i co najmniej jednej innej platformy.