Эта статья подготовлена командой Xiaosheng. Команда Xiaosheng — это начинающая команда, специализирующаяся на аудио- и музыкальных технологиях. Она активно использует Flutter для создания кроссплатформенных приложений. Я надеюсь изучить возможности Flutter на настольных и мобильных терминалах. вместе с вами.
задний план
Мы планируем разработать полнофункциональную кроссплатформенную платформу для производства музыки (DAW).С самого начала проекта мы уточнили план поддержки всей платформы (т.е. Windows/MacOS/Linux/iOS/Android), поэтому мы также использовать этоЧтобы найти технические решения для цели, после периода исследований и изучения, было примерно определено несколько вариантов.Результаты внутреннего опроса следующие (Этот результат представляет собой только внутреннее восприятие команды, если есть какая-либо разница, пожалуйста, потерпите меня.):
Технические решения | представление | Эффективность НИОКР | Кроссплатформенная совместимость | Расширяемость | Возможность взаимодействия с родным кодом |
---|---|---|---|---|---|
HTML5 | Низкий | высоко | высоко | Низкий | Низкий |
QT | высоко | очень низкий | высоко | высоко | высоко |
React Native | середина | высоко | Низкий | середина | середина |
Flutter | высоко | высоко | высоко | середина | высоко |
Почему бы не использовать стек технологий, построенный на HTML5?
Известно, что HTML5 является самым простым в использовании кросс-платформенным решением пользовательского интерфейса, а индустрия развита, существует множество дополнительных фреймворков и компонентов с открытым исходным кодом, которые можно использовать напрямую. Однако, как профессиональный инструмент повышения производительности, DAW не подходит для работы полностью в браузерной среде.Например, сторонние подключаемые системные браузеры не могут ее поддерживать.Кроме того, использование ресурсов памяти не очень удобно.Обычно , музыкальный проект может занимать несколько гигабайт памяти, десятки тысяч объектов необходимо поддерживать во время выполнения, что является серьезной нагрузкой как для Javascript, так и для браузеров. С другой стороны, даже если нам нужно поддерживать Интернет в кастрированном виде, то технология WASM — наш лучший выбор. Поэтому мы не рассматриваем технические решения на базе HTML5.
Почему бы не выбрать старомодные нативные высокопроизводительные фреймворки, такие как QT и GTK?
С точки зрения традиционной технологии, QT — это техническое решение, которое наилучшим образом соответствует нашим потребностям, и многие производители старых инструментов также используют стек технологий QT. QT, несомненно, является лучшим выбором с точки зрения операционной эффективности.Наша главная забота - способность управления и эффективность исследований и разработок CPP.Существует большая фундаментальная разница между разработкой пользовательского интерфейса и разработкой движка.Разработка движка обычно использует модульные тесты для завершения логики.Проверка, и пользовательского интерфейса, трудно использовать модульное тестирование для проверки эффектов пользовательского интерфейса, и редко можно увидеть команды, которые действительно полагаются на модульное тестирование для разработки пользовательского интерфейса, а QT не имеет технологии горячей перезагрузки, подобной Webpack, эффективность проверки пользовательского интерфейса будет очень низким, даже наша небольшая команда не может себе этого позволить. CPP также является языком программирования с очень высоким порогом входа.У нас также есть сомнения относительно решения QT, но мы не сдались полностью.
Какие особенности Flutter нас привлекли
- Фрезентация непосредственно создает компоненты на основе двигателя чертежа Skia. Операционная система должна обеспечивать только возможности рисования на уровне пикселей, поэтому он обеспечивает кроссплатформенную консистенцию пользовательского интерфейса (консистенция на уровне пикселей), а совместимость актуальности реагирования всегда была полна жалобы. Сообщество.
- Dart также очень удобен для разработки пользовательского интерфейса.
- По умолчанию объекты передаются по ссылке.
- Поддержка ГОРЯЧЕЙ перезагрузки. Это значительно повышает эффективность разработки, делая эффективность исследований и разработок Flutter не ниже, чем у HTML5.
- Поддержка AOT, эффективность выполнения кода производственного уровня резко возрастает, не уступая производительности нативных приложений.
- поддержка ФФИ. Может напрямую взаимодействовать с собственным кодом C и Cpp практически без потери производительности.
- Веб-поддержка. Flutter можно напрямую скомпилировать для работы в Интернете, что также открывает для нас возможность предоставлять веб-сервисы.
Эти функции Flutter напрямую соответствуют нашим потребностям, поэтому мы решили попробовать использовать Flutter для создания нашей платформы.
В заключение
Если вы также ищете техническое решение, учитывающее как эффективность исследований и разработок, так и эффективность времени выполнения, тогда Flutter должен быть очень хорошим выбором.