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

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

  • компиляция swc через Flash Pro;
  • распаковка swc через 7-zip и перетаскивание файлов по нужным папкам;
  • сборка java классов в jar библиотеку через Eclipse;
  • сборка 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 и добавляются три параметра компилятора:

  • source=’1.6′
  • target=’1.6′
  • bootclasspath=’${java_rt.lib}’

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

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

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

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

Сборка ane:

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

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

Сборка ane с помошью ant: 8 комментариев

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

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

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

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

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

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

  4. Здравствуйте,
    возможно ли добавить в ANE jar файл и папки(armeabi-v7a/x86) с *.so файлами которые он использует?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *