В статье Hello ANE! Или как создать нативное расширение для iOS я рассказывал как создать первое нативное расширение для платформы iOS. В этой попробуем разобрать пример аналогичного расширения только для платформы MacOS.
Как я рассказывал прошлый раз, разработка нативного расширения делится на три этапа:
extension.xml
Также необходимо изменить файл extension.xml, теперь он выглядит так:
Ну вот и все. Не ругайте меня сильно за то, что я написал не полную статью, а только разницу с предыдущей статьей, оооочень лень писать то что было уже написано :) В следующей статье расскажу как собрать один пакет ane для двух(и более) платформ.
Скачать исходники можно от сюда. Пользуйтесь и не забывайте комментировать/лайкать ).
Как я рассказывал прошлый раз, разработка нативного расширения делится на три этапа:
- создание библиотеки SWC
- создание библиотеки Xcode
- сборка пакета ANE
Создание библиотеки SWC.
Библиотеку SWC будем использовать такую же как и в предыдущей статье, без изменений.
Создание библиотеки Xcode.
Создание библиотеки Xcode для платформы MacOS немного отличается от предыдущей статьи: File->New->Project. В появившемся окне выбираем раздел:
OS X -> Framework & Library -> Cocoa Framework.
После создания проекта в прошлый раз мы добавляли в проект файл FlashRuntimeExtensions.h. Для платформы MacOS необходимо добавить фреймфорк: Adobe AIR.framework. Этот фреймфорк должен лежать в каталоге <flexSdkPath>/runtimes/air/mac/Adobe AIR.framework/, если вы его не нашли забрать можно от сюда.
Вот список изменений в коде библиотеки:
- Название файлов поменял на helloaneMac.h и helloaneMac.m.
Теоретически этого можно было не делать, но это будет необходимо для следующей статьи где я расскажу как можно объединить два расширения для платформ iOS и MacOS в один ane файл (т.е. если ваше приложение мультиплатформенное, то нет необходимости создавать ane файл для каждой платформы отдельно.) Напоминаю, если вы поменяли методы глобальной инициализации/финализации в коде Xcode, то необходимо так же изменить названия этих методов в файле extension.xml. - В прошлом проекте в файле helloane.h в самом начале мы писали строку: #import "FlashRuntimeExtensions.h", надо заменить её на #include <Adobe AIR/Adobe AIR.h>
- поменял методы глобальной инициализации/финализации с helloaneExtInitializer/helloaneExtFinalizer на
helloaneMacExtInitializer/helloaneMacExtFinalizer. Смысл этого тот же, что и в пункте 1.
Сборка пакета ANE
Для сборки ane под платформу MacOS используем следующий sh-скрипт:#!/bin/sh AIR_SDK_PATH="/Users/zaab/work/sdks/AdobeAIRSDK_3.3/" ANE_NAME="hello.ane" SWC_FILE_NAME="helloaneLib.swc" STATIC_LIB_NAME="helloaneMac.framework" BUILD_DIR="./build/" mkdir $BUILD_DIR cp -f "extension.xml" $BUILD_DIR"extension.xml" cp -f "platformoptions.xml" $BUILD_DIR"platformoptions.xml" cp -r "../xcode/build/"$STATIC_LIB_NAME $BUILD_DIR cp -f "../asLib/bin/"$SWC_FILE_NAME $BUILD_DIR /usr/bin/unzip -o "$BUILD_DIR$SWC_FILE_NAME" -d "$BUILD_DIR" rm $BUILD_DIR"catalog.xml" pushd "$BUILD_DIR" "$AIR_SDK_PATH"/bin/adt -package -target ane "$ANE_NAME" extension.xml -swc "$SWC_FILE_NAME" -platform MacOS-x86 "$STATIC_LIB_NAME" library.swf popd rm $BUILD_DIR$SWC_FILE_NAME rm -r $BUILD_DIR$STATIC_LIB_NAME rm $BUILD_DIR"extension.xml" rm $BUILD_DIR"platformoptions.xml" rm $BUILD_DIR"library.swf"Различия с прошлым скриптом здесь лишь в том что убрали платформу -platform iPhone-ARM и добавили новую -platform MacOS-x86.
extension.xml
Также необходимо изменить файл extension.xml, теперь он выглядит так:
<extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>com.anedevelop.helloane</id> <versionNumber>1</versionNumber> <platforms> <platform name="MacOS-x86"> <applicationDeployment> <nativeLibrary>helloaneMac.framework</nativeLibrary> <initializer>helloaneMacExtInitializer</initializer> <finalizer>helloaneMacExtfinalizer</finalizer> </applicationDeployment> </platform> </platforms> </extension>
Ну вот и все. Не ругайте меня сильно за то, что я написал не полную статью, а только разницу с предыдущей статьей, оооочень лень писать то что было уже написано :) В следующей статье расскажу как собрать один пакет ane для двух(и более) платформ.
Скачать исходники можно от сюда. Пользуйтесь и не забывайте комментировать/лайкать ).