Проблема цепочек зависимостей
Многие расширения 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 расширения в дескриптор вашего приложения, скопируйте файл в проект — готово. Все расширения · Цены