Сборка ane с помошью ant

В своём уроке по созданию Native Extension я давал довольно замороченный способ сборки ane файла,  который состоял из следующих шагов:

Представьте, сколько манипуляций приходилось делать чтобы протестировать любые изменения кода. Это неимоверно неудобно.

Относительно недавно я открыл для себя инструмент под названием Apache Ant и жалею, что не обратил на него внимания раньше. Он позволяет проделать все эти шаги в один клик. Если кратко, то ant — это утилита для автоматизации компиляции и сопутствующих процессов(работа с файлами, изменения кода и т.д.). Сборочный конфиг представляет собой обычный xml. Для его запуска нужно выполнить команду ant -f build.xml. Сам по себе ant довольно прост и при желании его можно освоить за один вечер, хотя и придётся подглядывать в документацию.

На примере расширения Android-Notification-Extension-ANE я кратко расскажу, как это работает.

Весь билд-конфиг выглядит вот так. Рассмотрим чуть подробней.

Определение свойств:

Тут определяются пути, id расширения и таски для компиляторов флекса.

Создание временных папок:

Компиляция java классов и упаковка их в jar:

Тут стоит упомянуть, что ane не работает с jar библиотеками, скомпилированными с помощью jdk 1.7, поэтому в начале задаётся свойство пути к библиотеке jdk 1.6 и добавляются три параметра компилятора:

При компиляции через jdk 1.6 эти параметры не нужны.

Компиляция swc с помощью компилятора компонентов compc:

Работа с файлами:

Тут распаковывается swc и все файлы перемещаются в нужные места.

Сборка ane:

После сборки также удаляются временная папка и нужные файлы перемещаются в папку ane_ready_for_use.

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

 

 

5400 Всего просмотров 15 Просмотров за сегодня
Опубликовано 07.12.2013 в 23:18 · Автор illuzor · Ссылка
Рубрики: air · Теги: , , , ,

7 комментариев

Подписаться на комментарии по RSS

  1. Написал(-а) Max
    23.04.2014 в 13:49
    Ответить · Ссылка

    Добрый день.
    Пытаюсь собрать свою нативную либу используя вышеописанный метод и получаю ошибку
    Error 102: Invalid namespace http://ns.adobe.com/air/extension/3.2
    Ошибка вылетает на этапе задачи build.ane в процессе обработки extension.xml

    компилю все под air 3.2 для чтобы сохранить совместимость с некоторыми устройствами.

    параметр swf-version установил как 14 в build.xml хотя в принципе при его изменении ошибка также вылезает.

    • Написал(-а) iLLuzor
      23.04.2014 в 14:45
      Ответить · Ссылка

      Значит, ваш AIR SDK более ранней версии, чем 3.2, обновите.

  2. Написал(-а) Max
    23.04.2014 в 15:17
    Ответить · Ссылка

    Я использую flex sdk 4.6 с air 3.1(то что предустанавливается flashdevelop-ом), но мне кажется что проблема не в этом или не только в этом. Я попробовал скомпилить ane используя самый первый метод(http://gamedevblogs.ru/blog/android/1156.html) и получил точно такую же ошибку хотя использовал flash cs6 с публикацей в air 3.2

    • Написал(-а) iLLuzor
      23.04.2014 в 15:47
      Ответить · Ссылка

      Как вы хотите собрать под air 3.2, используя air 3.1?

      • Написал(-а) Max
        23.04.2014 в 16:34
        Ответить · Ссылка

        Да, тут я ступил. Скачал обновлённый sdk и стало компилится нормально хотя странно, что старый метод (через флэш) тоже не сработал.
        В любом случае спасибо

  3. Написал(-а) Max
    29.04.2014 в 18:31
    Ответить · Ссылка

    Добрый день. Задам ещё один вопрос по теме.
    Возможно ли включить в одну ane библиотеку несколько реализаций для разных платформ — например для андроида и windows? Есть необходимость использовать один и тот же код для разных платформ.

Подписаться на комментарии по RSS

Написать комментарий