Использование собственных расширений для Adobe AIR

Собственные расширения для Adobe AIR предоставляют API-интерфейсы ActionScript, с помощью которых можно получать доступ к функциям устройства, запрограммированным с использованием собственного кода. Иногда разработчики собственных расширений сотрудничают с производителями устройств, а иногда являются сторонними разработчиками.

Сведения о разработке собственных расширений см. в документе « Разработка собственных расширений для Adobe AIR ».

Собственное расширение включает следующие компоненты:

  • классы ActionScript;

  • собственный код.

Однако, поскольку разработчик приложения AIR использует собственное расширение, вам необходимо работать только с классами ActionScript.

Собственные расширения используются в следующих случаях:

  • Реализация собственного кода предоставляет доступ к характерным для платформы функциям. Эти характерные для платформы функции недоступны во встроенных классах ActionScript и не могут быть реализованы в классах ActionScript приложения. Реализация собственного кода позволяет обеспечить подобные функции, поскольку с ее помощью можно получать доступ к аппаратному и программному обеспечению устройства.

  • Реализация собственного кода иногда может обладать более высоким быстродействием, чем реализация, в которой используется только ActionScript.

  • Реализация собственного кода может предоставлять доступ ActionScript к существующему собственному коду.

Примеры собственных расширений доступны в Центре разработчика Adobe. Например, одно собственное расширение предоставляет доступ приложениям AIR к функции вибрации Android. См. документ « Собственные расширения для Adobe AIR ».

Файлы собственных расширений AIR (ANE)

Разработчики собственных расширений упаковывают собственное расширение в ANE-файл. ANE-файл представляет собой архивный файл, содержащий необходимые библиотеки и ресурсы для собственного расширения.

Обратите внимание, что для некоторых устройств в ANE-файле содержится библиотека собственного кода, используемая собственным расширением. Но для других устройств библиотека собственного кода установлена на устройстве. В некоторых случаях для определенного устройства собственное расширение может вовсе не иметь собственного кода; он реализован только с помощью ActionScript.

Разработчик приложений AIR использует ANE-файл следующим образом.

  • Включение ANE-файла в путь к библиотеке приложения (этот процесс аналогичен включению SWC-файла в путь к библиотеке). Благодаря этому приложение сможет обращаться к классам ActionScript расширения.

    Примечание. При компиляции приложения убедитесь, что для файла ANE выбрано динамическое связывание. При использовании Flash Builder на панели Path Properties (Параметры пути) средства ActionScript Builder укажите External. Если используется командная строка, укажите external-library-path.
  • Создание файла пакета ANE с приложением AIR.

Сравнение собственных расширений с классами ActionScript NativeProcess

ActionScript 3.0 предоставляет класс NativeProcess. Класс позволяет приложению AIR выполнять собственные процессы в операционной системе хоста. Эта возможность аналогична собственным расширениям, которые предоставляют доступ к характерным для платформы функциям и библиотекам. При принятии решения об использовании класса NativeProcess или собственного расширения учитывайте следующее.

  • Только профиль AIR extendedDesktop поддерживает класс NativeProcess. Поэтому для приложений с профилями AIR mobileDevice и extendedMobileDevice возможен выбор только собственных расширений.

  • Разработчики собственных расширений часто предоставляют собственные реализации для различных платформ, но предоставляемый ими API-интерфейс ActionScript, как правило, одинаков на всех платформах. При использовании класса NativeProcess код ActionScript, предназначенный для запуска собственного процесса, может различаться на разных платформах.

  • Класс NativeProcess запускает отдельный процесс, в то время как собственное расширение выполняется в том же процессе, что и приложение AIR. Поэтому, если существуют опасения по поводу сбоя кода, безопаснее использовать класс NativeProcess. Однако отдельный процесс в некоторых случаях подразумевает необходимость реализации обработки межпроцессного взаимодействия.

Сравнение собственных расширений с библиотеками классов ActionScript (SWC-файлы)

SWC-файл является библиотекой классов ActionScript в архивном формате. SWC-файл содержит SWF-файл и другие файлы ресурсов. С помощью SWC-файла можно удобно получать общий доступ к классам ActionScript, не используя специальный код ActionScript и файлы ресурсов.

Пакет собственного расширения является ANE-файлом. Как и SWC-файл, ANE-файл также является библиотекой классов ActionScript, содержащей SWF-файл и другие файлы ресурсов в архивном формате. Однако наиболее важное различие ANE- и SWC-файлов заключается в том, что только ANE-файл может содержать библиотеку собственного кода.

Примечание. При компиляции приложения убедитесь, что для файла ANE выбрано динамическое связывание. При использовании Flash Builder на панели Path Properties (Параметры пути) средства ActionScript Builder укажите External. Если используется командная строка, укажите external-library-path.

Поддерживаемые устройства

Начиная с версии AIR 3, можно использовать собственные расширения в приложениях для следующих устройств:

  • устройства Android с Android 2.2 и более поздних версий;

  • устройства iOS с ОС iOS 4.0 и более поздних версий;

  • iOS Simulator, начиная с версии AIR 3.3

  • Blackberry PlayBook

  • настольные устройства Windows, поддерживающие AIR 3.0;

  • настольные устройства Mac OS X, поддерживающие AIR 3.0;

Часто одно и то же собственное расширение предназначено для нескольких платформ. В ANE-файле расширения содержатся ActionScript и собственные библиотеки для каждой поддерживаемой платформы. Как правило, библиотеки ActionScript имеют одинаковые общедоступные интерфейсы для всех платформ. Собственные библиотеки обязательно различаются.

Иногда собственное расширение поддерживает платформу по умолчанию. Реализация для платформы по умолчанию содержит только код ActionScript, но не содержит собственного кода. Если пакет приложения создается для платформы, которая не поддерживается расширением, при выполнении в приложении используется реализация по умолчанию. Например, рассмотрим расширение, предоставляющее доступ к функции, которая применяется только на мобильных устройствах. Расширение может также обеспечивать реализацию по умолчанию, используемую в приложениях для настольных систем для имитации этой функции.

Поддерживаемые профили устройств

Следующие профили AIR поддерживают собственные расширения:

  • extendedDesktop , начиная с AIR 3.0;

  • mobileDevice , начиная с AIR 3.0;

  • extendedMobileDevice , начиная с AIR 3.0.

Список задач для использования собственного расширения

Для использования собственного расширения в приложении выполните следующие задачи.

  1. Объявите расширение в файле дескриптора приложения.

  2. Включите ANE-файл в путь к библиотеке приложения.

  3. Упакуйте приложение.

Объявление расширения в файле дескриптора приложения

Для всех приложений AIR предусмотрен файл дескриптора приложения. Когда в приложении используется собственное расширение, файл дескриптора приложения включает элемент <extensions> . Например:

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

Значение элемента extensionID совпадает со значением элемента id в файле дескриптора расширения. Файл дескриптора расширения — это файл XML с именем extension.xml. Он упаковывается в ANE-файл. Для просмотра файла extension.xml можно использовать инструмент извлечения архива.

Включение ANE-файла в путь к библиотеке приложения

Чтобы скомпилировать приложение, в котором используется собственное расширение, включите ANE-файл в путь к библиотеке.

Использование ANE-файла с Flash Builder

Если в приложении используется собственное расширение, включите в путь к библиотеке ANE-файл для собственного расширения. Затем с помощью Flash Builder можно выполнить компиляцию кода ActionScript.

Выполните следующие действия, используя Flash Builder 4.5.1.

  1. Измените расширения ANE-файла с .ane на .swc. Это действие необходимо для того, чтобы среда Flash Builder могла найти файл.

  2. В проекте Flash Builder выберите «Проект» > «Свойства».

  3. В диалоговом окне «Свойства» выберите путь сборки Flex.

  4. На вкладке «Путь к библиотеке» выберите «Добавить SWC-файл».

  5. Выберите SWC-файл и нажмите «Открыть».

  6. В диалоговом окне «Добавить SWC-файл» нажмите «OK».

    Теперь ANE-файл отображается на вкладке «Путь к библиотеке» в диалоговом окне «Свойства».

  7. Разверните запись SWC-файла. Дважды нажмите на тип ссылки, чтобы открыть диалоговое окно «Параметры элемента пути библиотеки».

  8. В диалоговом окне «Параметры элемента пути библиотеки» для параметра «Тип ссылки» установите значение «Внешняя».

Теперь можно скомпилировать приложение, например «Проект» > «Сборка проекта».

Использование ANE-файла с Flash Professional

Если в приложении используется собственное расширение, включите в путь к библиотеке ANE-файл для собственного расширения. Затем с помощью Flash Professional CS5.5 можно выполнить компиляцию кода ActionScript. Выполните следующие действия.

  1. Измените расширения ANE-файла с .ane на .swc. Это действие необходимо для того, чтобы среда Flash Professional могла найти файл.

  2. Выберите «Файл» > «Параметры ActionScript» для FLA-файла.

  3. Перейдите на вкладку «Путь к библиотеке» в диалоговом окне «Дополнительные параметры ActionScript 3.0».

  4. Нажмите кнопку «Перейти к SWC-файлу».

  5. Выберите SWC-файл и нажмите «Открыть».

    Теперь SWC-файл отображается на вкладке «Путь к библиотеке» в диалоговом окне «Дополнительные параметры ActionScript 3.0».

  6. После выбора SWC-файла нажмите кнопку «Выберите параметры связывания для библиотеки».

  7. В диалоговом окне «Параметры элемента пути библиотеки» для параметра «Тип ссылки» установите значение «Внешняя».

Создание пакета приложения, в котором используются собственные расширения

Используйте инструмент ADT для упаковки приложения, в котором используются собственные расширения. Создание пакета приложения с помощью Flash Professional CS5.5 или Flash Builder 4.5.1 невозможно.

Сведения об использовании инструмента ADT приводятся в документе « AIR Developer Tool (ADT) ».

Например, следующая команда ADT создает DMG-файл (собственный файл установщика для ОС Mac OS X) для приложения, в котором используются собственные расширения:

adt -package 
    -storetype pkcs12 
    -keystore myCert.pfx 
    -target native 
    myApp.dmg 
    application.xml 
    index.html resources 
    -extdir extensionsDir
Следующая команда создает пакет APK для устройства Android:
adt -package 
    -target apk 
    -storetype pkcs12 -keystore ../codesign.p12 
    myApp.apk 
    myApp-app.xml 
    myApp.swf icons 
    -extdir extensionsDir

Следующая команда создает пакет iOS для приложения 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

Обратите внимание на следующие моменты.

  • Используйте тип пакета собственного установщика.

  • Укажите каталог расширения.

  • Убедитесь, что ANE-файл поддерживает целевое устройство приложения.

Использование типа пакета собственного установщика

Пакет приложения должен быть собственным установщиком. Нельзя создавать кроссплатформенный пакет AIR (пакет .air) для приложения, в котором используется собственное расширение, поскольку собственные расширения, как правило, содержат собственный код. Однако обычно собственное расширение поддерживает несколько платформ с одинаковыми API-интерфейсами ActionScript. В таких случаях можно использовать один и тот же ANE-файл в различных пакетах собственных установщиков.

В следующей таблице приводится значение, которое необходимо использовать для параметра -target команды ADT.

Целевая платформа приложения

-target

Настольные устройства Mac OS X или Windows

-target native

-target bundle

Android

-target apk

или другие целевые устройства пакета Android.

iOS

-target ipa-ad-hoc

или другие целевые устройства пакета iOS

iOS Simulator

-target ipa-test-interpreter-simulator

-target ipa-debug-interpreter-simulator

Указание каталога расширения

Используйте параметр ADT -extdir для указания в ADT каталога, в котором содержатся собственные расширения (ANE-файлы).

Сведения об этом параметре см. в разделе « Параметры файлов и путей ».

Убедитесь, что ANE-файл поддерживает целевое устройство приложения

Во время предоставления ANE-файла разработчик собственного расширения сообщает о том, какие платформы поддерживает расширение. Можно также воспользоваться инструментом извлечения архива для просмотра содержимого ANE-файла. Извлеченные файлы содержат каталог для каждой поддерживаемой платформы.

Знание поддерживаемых расширением платформ играет важную роль при создании пакета приложения, использующего ANE-файл. Примите во внимание следующие правила:

  • Для создания пакета приложения Android ANE-файл должен включать платформу Android-ARM . Или ANE-файл должен включать платформу по умолчанию и хотя бы еще одну другую платформу.

  • Для создания пакета приложения iOS ANE-файл должен включать платформу iPhone-ARM . Или ANE-файл должен включать платформу по умолчанию и хотя бы еще одну другую платформу.

  • Для создания пакета приложения iOS Simulator ANE-файл должен содержать платформу iPhone-x86 .

  • Для создания пакета приложения Mac OS X ANE-файл должен включать платформу MacOS-x86 . Или ANE-файл должен включать платформу по умолчанию и хотя бы еще одну другую платформу.

  • Для создания пакета приложения Windows ANE-файл должен включать платформу Windows-x86 . Или ANE-файл должен включать платформу по умолчанию и хотя бы еще одну другую платформу.