← Обзор

Почему без APM

Одно расширение — один файл. Никаких цепочек зависимостей.

APM НЕ НУЖЕН. Скачайте и пользуйтесь. Проще уже некуда. Просто обновите Adobe AIR SDK. Если нужна помощь, мы рядом.

Почему наши нативные расширения для Adobe AIR поставляются без менеджера пакетов, без базовой библиотеки и без вспомогательных ANE — и что это изменило в наших собственных приложениях.

45 → 13 ANEs−6.5 MB on Android−5.9 MB on iOSAbout 2× faster start

Проблема цепочек зависимостей

Многие расширения AIR, устанавливаемые через менеджер пакетов (APM), поставляются не поодиночке. Они тянут за собой цепочку вспомогательных ANE: общую базовую библиотеку, библиотеки поддержки Android, сервисы Google Play, Firebase, сетевые и графические библиотеки. Часто эти вспомогательные компоненты нужны лишь потому, что их требует другое расширение.

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

Что мы измерили в наших приложениях

Наши приложения передают живое видео и двусторонний голос, часто со старых телефонов и планшетов. В 2026 году мы заменили в них все сторонние расширения собственными автономными расширениями и сравнили результаты на реальных устройствах:

Расширения в Android-приложении45, из них 35 сторонних, большинство — вспомогательные ANE → 13, все собственные
Дескриптор приложенияAndroid: 197 → 133 строки (дополнения манифеста 117 → 85), iOS: 161 → 126 строк. Меньше записей в манифесте для поддержки и меньше того, что может сломаться
Размер приложения−6.5 MB на Android (−10 %), −5.9 MB на iOS (−14 %)
Запуск приложенияпримерно в два раза быстрее
Фоновая работаникаких аналитических или вспомогательных библиотек, работающих параллельно с потоком: больше CPU и пропускной способности остаётся для видео и голоса, что особенно важно на старых устройствах

Конфликты и вынужденные обновления

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

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

Наш подход: автономность

Обернуть библиотеки платформы в тонкую оболочку и навесить на неё набор вспомогательных ANE — более быстрый путь к большому числу расширений. Создавать каждое расширение полным и самодостаточным требует гораздо больше труда: каждое должно содержать ровно то, что ему нужно, проходить отдельное тестирование на каждой платформе и при этом работать рядом со всеми остальными. Мы выбрали эту работу, чтобы последствия не легли на ваше приложение.

  • Один файл на функцию. Каждое расширение — это один ANE. Без базовой библиотеки, без вспомогательных ANE, без менеджера пакетов.
  • Только то, что нужно функции. Если требуется библиотека платформы, например Google Play Billing или Firebase Cloud Messaging для push-уведомлений на Android, сборка автоматически добавляет именно эту библиотеку. И ничего больше.
  • Независимые обновления. Обновление одного расширения никогда не вынуждает вас обновлять другое.
  • Проверено в продакшене. Каждое расширение работает в наших собственных приложениях на iOS, Android и macOS и протестировано на современных и старых устройствах.

Добавьте ID расширения в дескриптор вашего приложения, скопируйте файл в проект — готово. Все расширения · Цены

Контакты

Хотите отказаться от цепочек зависимостей?

Мы заменяли их в наших собственных приложениях шаг за шагом. Если вы хотите сделать то же самое в своём AIR-приложении, будем рады вашему обращению.

[email protected]