Flutter.Много — это комьюнити для мобильных разработчиков! Кейсы, опыт, полезные советы, проверенные плагины/библиотеки и живые обсуждения в чате: всё это вы можете найти в нашем телеграм, который мы ведем всей командой. К нам присоединилось уже больше 2000 мобильных разработчиков. Приходи и ты!
Flutter 3.19 знаменует собой существенные обновления движка, особенно благодаря заметному прогрессу, достигнутому в Impeller, движке рендеринга, лежащем в основе Flutter. Давайте углубимся в ключевые аспекты этих улучшений движка.
Улучшения Impeller в Android OpenGL
В предыдущей версии 3.16 Flutter предложил пользователям изучить Impeller на устройствах Android с поддержкой Vulkan, что охватывает 77% используемых устройств Android. В последующие месяцы серверная часть OpenGL Impeller претерпела значительные улучшения, достигнув функциональности со своим аналогом Vulkan. Примечательно, что была добавлена поддержка MSAA, обеспечивающая правильную визуализацию приложений Flutter практически на всех устройствах Android. Хотя некоторые функции, такие как пользовательские шейдеры и полная поддержка внешних текстур, уже не за горами.
Будущее развитие
После обеспечения точности рендеринга основным приоритетом в период предварительного просмотра Impeller для Android является производительность. В работе будут использованы преимущества подпроходов Vulkan, чтобы значительно улучшить производительность расширенных режимов наложения. Ожидается, что изменение стратегии рендеринга от постоянной тесселяции каждого пути CPU к подходу «сначала чертеж (схема), затем рисунок» значительно снизит загрузку CPU Impeller как на Android, так и на iOS. Новая реализация блюра по Gaussian будет соответствовать пропускной способности реализации Skia и улучшит использование блюра в iOS.
Информация о глифах
В этом выпуске представлены два новых метода для dart:ui объекта Paragraph: getClosestGlyphInfoForOffset и getGlyphInfoAt, каждый из которых возвращает объект нового типа GlyphInfo. Разработчики могут изучить документацию по новому типу GlyphInfo для получения подробной информации.
Трассировка GPU
В Impeller on Metal (iOS, macOS, Simulator) и на устройствах Android с поддержкой Vulkan движок Flutter теперь предоставляет время GPU для каждого кадра на временной шкале, доступное в отладке и сборках профиля. Пользователи DevTools могут проверять синхронизацию кадров графического процессора под заголовком «GPUTracer», что обеспечивает улучшенную видимость показателей производительности.
Благодаря этим обновлениям движка Flutter 3.19 гарантирует, что разработчики смогут использовать расширенные возможности рендеринга, улучшенную производительность и расширенные функциональные возможности API для создания еще более привлекательных и эффективных приложений Flutter.
Обратите внимание: поскольку устройства Android, не поддерживающие Vulkan, могут неверно сообщать о своей поддержке запроса синхронизации GPU, трассировку GPU Impeller можно включить только с помощью флага, установленного в файле AndroidManifest.xml на этих устройствах.
<meta-data
android:name="io.flutter.embedding.android.EnableOpenGLGPUTracing"
android:value="true" />
Flutter 3.19 представляет значительные обновления движка, повышая производительность и добавляя новые функции, повышающие качество разработки приложений.
Константы специализации для повышения производительности
Движок Impeller теперь поддерживает константы специализации — функцию, которая существенно уменьшает размер несжатого двоичного файла движка Flutter, повышая общую производительность почти на 350 КБ.
Ускорение фонового фильтра
В этом выпуске заметно улучшена производительность фоновых фильтров и блюра в Impeller. Удалив возможность чтения экранной текстуры, в сценах с несколькими фоновыми фильтрами производительность повышается на 20–70 %, в зависимости от сложности. Более того, Impeller больше не сохраняет безоговорочно трафаретный буфер для каждого фонового фильтра, что приводит к значительному улучшению времени обработки кадров GPU и времени процессора растровых потоков.
Веб-валидатор диплинков
Представлен новый валидатор диплинков Flutter, упрощающий их реализацию. Теперь разработчики могут проверять конфигурацию assetlinks.json файлов на Android, гарантируя правильную настройку и предоставляя рекомендации по реализации.
Поддержка Share.invoke
Кнопка «Поделиться» по умолчанию, ранее отсутствовавшая в Android, теперь добавлена в новой версии, что обеспечивает универсальную доступность всех кнопок контекстного меню по умолчанию на каждой платформе. Следить за текущей работой можно в PR #107578.
Обновление функции нативных ресурсов
Flutter 3.19 упрощает вызовы FFI через собственные ресурсы на Android, улучшая совместимость с функциями других языков в коде Flutter.
Слой текстуры в режиме гибридной композиции
Карты Google и лупа для ввода текста теперь работают в режиме гибридной композиции текстурного слоя (TLHC), что обещает более высокую производительность для приложений, использующих эти функции.
Настраиваемые общесистемные кнопки панели инструментов выбора текста
Приложения Android теперь могут включать настраиваемые элементы меню выбора текста, что обеспечивает большую гибкость Flutter TextField.
Интеграция собственных шрифтов Flutter iOS
Текст Flutter на iOS теперь более точно соответствует рекомендациям Apple по дизайну: более мелкие шрифты расположены дальше для улучшения читаемости, а более крупные шрифты кажутся более компактными для экономии места.
Благодаря этим обновлениям Flutter 3.19 продолжает совершенствовать среду разработки, предлагая улучшенную производительность, оптимизированную функциональность и визуальную эстетику на платформах Android и iOS.
Откройте для себя последние улучшения DevTools с Flutter 3.19, призванные улучшить опыт разработки и оптимизировать рабочие процессы отладки и профилирования.
Проверка диплинков на Android
В DevTools теперь есть новый инструмент и экран, предназначенные для проверки настройки диплинков на Android. Это обеспечивает плавный и безошибочный процесс интеграции диплинков, расширяя возможности навигации приложения.
Расширенное отслеживание активности каналов платформы
Изучите новую опцию в меню «Enhance Tracing», специально разработанную для отслеживания активности каналов платформы. Это дополнение оказывается неоценимым для приложений, использующих плагины, поскольку дает представление о взаимодействии между Flutter и собственным кодом.
Доступность экранов профилирования производительности и CPU
Экраны профилирования производительности и CPU теперь доступны даже при отсутствии подключенного приложения. Ранее сохраненные данные о производительности или профили CPU можно перезагрузить и просмотреть непосредственно с этих экранов, что обеспечивает гибкость при анализе производительности приложений.
Улучшения боковой панели Flutter в VS Code
Теперь VS Code позволяет включать новые платформы, если они не включены для текущего проекта. Кроме того, меню DevTools на боковой панели предлагает удобную возможность открыть DevTools во внешнем окне браузера, обеспечивая бесшовную и настраиваемую среду разработки.
Чтобы узнать больше, ознакомьтесь с примечаниями к выпуску DevTools, 2.29.0 , 2.30.0 и 2.31.0 .
Проверка диплинков на Android
Поддержка Windows Arm64
Flutter для Windows теперь включает в себя начальную поддержку архитектуры Arm64 благодаря похвальным усилиям члена сообщества @pbo-linaro. Она открывает путь к более эффективным и производительным приложениям Flutter, которые изначально работают на устройствах Windows Arm64. Хотя этот шаг все еще находится в разработке и прогресс отслеживается по проблеме GitHub #62597, он означает многообещающее улучшение для разработчиков Flutter, стремящихся оптимизировать свои приложения для более широкого спектра устройств Windows.
Манифест конфиденциальности
Поддержка Windows Arm64
Flutter теперь включает в себя манифест конфиденциальности для iOS, отвечающий будущим требованиям Apple.
Сторонние SDK расширяют функциональность приложения, но могут повлиять на конфиденциальность пользователей. Разработчики должны внимательно относиться к методам сбора данных. Apple представила манифесты конфиденциальности и подписи SDK на WWDC23 для повышения прозрачности. В манифестах конфиденциальности подробно описаны методы обеспечения конфиденциальности стороннего кода, что упрощает создание этикеток конфиденциальности. Подписи SDK обеспечивают целостность SDK во время обновлений версий, повышая безопасность цепочки поставок программного обеспечения. Начиная с весны 2024 года, материалы в App Store должны включать манифесты конфиденциальности и подписи для перечисленных SDK. Это требование применяется к новым приложениям и обновлениям, содержащим перечисленные SDK. Соблюдение требований обеспечивает прозрачность и целостность разработки приложений и поддерживает конфиденциальность пользователей.
Улучшение экосистемы пакетов Flutter и Dart
Экосистема пакетов Flutter и Dart остается ключевым фактором, позволяющим разработчикам создавать красивые и производительные приложения для любого экрана из единой базы кода. В 2023 году экосистема выросла на 26%: с 38 000 пакетов в январе до 48 000 в конце декабря.
По состоянию на январь 2024 года у Pub.dev более 700 000 активных пользователей в месяц. Команда Flutter по-прежнему заинтересована и стремится поддерживать этот рост в будущем, а также предоставлять разработчикам возможность создавать и вносить свой вклад в Flutter и Dart. В этом обновлении мы рассмотрим новейшие Flutter Favorites и результаты виртуального саммита Package Ecosystem, а также поделимся некоторыми заметными обновлениями и информацией, которую нужно знать.
Ознакомьтесь с январской публикацией в блоге о развитии экосистемы пакетов Flutter и Dart.
В неустанном стремлении к прогрессу Flutter 3.19 вводит некоторые важные изменения, направленные на разработку более безопасных, оптимизированных и многофункциональных сред.
Прекращение поддержки Windows 7 и 8
Прекращается поддержка Windows 7 и 8 в выпусках Dart 3.3 и Flutter 3.19. Этот стратегический сдвиг, схожий с подходом Microsoft, позволяет сосредоточиться на улучшении Flutter для современных операционных систем. Этот шаг закладывает основу для более безопасной, эффективной и многофункциональной среды разработки в поддерживаемых версиях Windows.
Устаревание Impeller Dithering Flag
В соответствии со стабильной версией 3.16 флаг Paint.enableDithering устарел. Чтобы получить полное представление об этом изменении, ознакомьтесь с подробным объяснением на нашем веб-сайте.
Устаревание iOS 11
Flutter прощается с поддержкой iOS 11 из-за сбоя во время выполнения, вызванного некоторыми сетевыми API. Следовательно, приложения, созданные на основе Flutter 3.16.6 и более поздних версий, не будут совместимы с устройствами под управлением iOS 11.
Подробности об устаревшем Auto Render Mode
В этом выпуске представлены критические изменения, в том числе прекращение поддержки API, срок действия которых истек после выпуска версии 3.16. Обратитесь к руководству по прекращению поддержки для этого выпуска, чтобы определить все затронутые API, а также дополнительные инструкции по контексту и миграции.
Исправление Flutter в сочетании с быстрыми исправлениями в IDE поддерживает многие из этих устаревших версий. Массовые исправления можно эффективно реализовать с помощью dart fix инструмента командной строки. Кроме того, обратите внимание, что этот выпуск знаменует собой включение пакета flutter_driver в политику прекращения поддержки, пополнив ряды уже поддерживаемых пакетов, таких как flutter и flutter_test.
Эволюция Flutter в мощный и эффективный инструментарий, которым он стал, является прямым свидетельством самоотверженности и упорной работы нашего невероятного сообщества. Сердечное спасибо каждому из разработчиков.
Чтобы углубиться в особенности того, чего удалось достичь в этом выпуске, просмотрите примечания к выпуску и журнал изменений, чтобы получить полный список дополнений во Flutter 3.19.
Flutter 3.19, наряду с Dart 3.3 , теперь доступен в стабильной версии. Отправиться в это новейшее путешествие с Flutter так же просто, как запустить обновление Flutter.
Подписывайтесь на наш телеграм-канал Flutter.Много, чтобы быть в курсе новых публикаций и узнавать новое из мира кроссплатформенной разработки.