Вопрос или проблема
Используйте версию flutter: 3.19.5
сбой приложения: https://github.com/flutter/flutter/issues/135003
и был исправлен здесь: https://github.com/google/skia/commit/d6b285323c2dc7f1886b1f7b6d1c372afff133d8#diff-b9701d772b852ff8a4a6ff648d741eb4c4ad532549a4a5389eb0a7f00850700aL225
и я изменил файл в: engine/src/flutter/third_party/skia
вставьте описание изображения здесь
тогда
ninja -C out/ios_release -t clean
ninja -C out/ios_release -j 8
скопируйте Flutter.framework
из ~/engine/src/out/ios_release/Flutter.xcframework/ios-arm64
в ~/fvm/versions/3.19.5/bin/cache/artifacts/engine/ios-release/
затем запустите в режиме релиза, все равно происходит сбой
и в проекте flutter_engine
не найдены ParagraphSlide.cpp
и OneLineShaper.cpp
так как я могу сделать cherry-pick этого коммита в skia?
кто-нибудь знает, как сделать cherry-pick этого коммита, когда используется пользовательский движок flutter?
Ответ или решение
Чтобы выполнить операцию cherry-pick для конкретного коммита из репозитория Skia и применить его в вашей настраиваемой версии движка Flutter, выполните следующие шаги:
Шаг 1: Подготовка репозитория Skia
-
Клонируйте репозиторий Skia: Если у вас еще нет локальной копии, выполните команду:
git clone https://skia.googlesource.com/skia.git
-
Перейдите в директорию Skia:
cd skia
-
Синхронизируйте подмодули (если требуется):
git submodule update --init --recursive
Шаг 2: Выполните cherry-pick нужного коммита
-
Получите ветку, в которой вы работаете:
Например, если вы работаете с основной веткой:
git checkout main
-
Выполните cherry-pick:
Используйте хеш коммита, который вы хотите применить (в вашем случае, это
d6b285323c2dc7f1886b1f7b6d1c372afff133d8
):git cherry-pick d6b285323c2dc7f1886b1f7b6d1c372afff133d8
Если возникнут конфликты, разрешите их вручную и выполните:
git cherry-pick --continue
Шаг 3: Обновите Flutter Engine
-
Перейдите в директорию вашего проекта Flutter с настроенным движком:
cd ~/path/to/your/flutter/engine
-
Копируйте обновленную библиотеку Skia:
После успешного cherry-pick и сборки вы можете скопировать соответствующие файлы из Skia в проект Flutter:
cp -R /path/to/updated/skia/engine/src/flutter/third_party/skia <путь_к_your_flutter_engine>
Шаг 4: Соберите Flutter Engine
-
Очистите и соберите движок:
ninja -C out/ios_release -t clean ninja -C out/ios_release -j 8
-
Скопируйте новый
Flutter.framework
в нужное место:cp ~/engine/src/out/ios_release/Flutter.xcframework/ios-arm64/Flutter.framework ~/fvm/versions/3.19.5/bin/cache/artifacts/engine/ios-release/
Шаг 5: Тестирование
-
Запустите приложение в режиме релиза:
Убедитесь, что вы используете команду
flutter run --release
для проверки, устранили ли вы проблему и приложение не выдает ошибок.
Шаг 6: Проверка отсутствия файлов ParagraphSlide.cpp
и OneLineShaper.cpp
Если вы не можете найти файлы ParagraphSlide.cpp
и OneLineShaper.cpp
:
-
Убедитесь, что вы собираете нужные компоненты Skia. Возможно, вам придется подтянуть последние изменения из основного репозитория или выставить дополнительные флаги сборки.
-
Выполните поиск по другим веткам или тегам в репозитории Skia, чтобы убедиться, что файлы присутствуют в необходимой версии.
Если после выполнения всех этих шагов проблема с падением приложения сохраняется, рекомендуется зайти на форум Flutter или GitHub для более детального выяснения ситуации.