Пользовательский движок Flutter: как выбрать коммит Skia с помощью cherry-pick.

Вопрос или проблема

Используйте версию 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

  1. Клонируйте репозиторий Skia: Если у вас еще нет локальной копии, выполните команду:

    git clone https://skia.googlesource.com/skia.git
  2. Перейдите в директорию Skia:

    cd skia
  3. Синхронизируйте подмодули (если требуется):

    git submodule update --init --recursive

Шаг 2: Выполните cherry-pick нужного коммита

  1. Получите ветку, в которой вы работаете:

    Например, если вы работаете с основной веткой:

    git checkout main
  2. Выполните cherry-pick:

    Используйте хеш коммита, который вы хотите применить (в вашем случае, это d6b285323c2dc7f1886b1f7b6d1c372afff133d8):

    git cherry-pick d6b285323c2dc7f1886b1f7b6d1c372afff133d8

    Если возникнут конфликты, разрешите их вручную и выполните:

    git cherry-pick --continue

Шаг 3: Обновите Flutter Engine

  1. Перейдите в директорию вашего проекта Flutter с настроенным движком:

    cd ~/path/to/your/flutter/engine
  2. Копируйте обновленную библиотеку Skia:

    После успешного cherry-pick и сборки вы можете скопировать соответствующие файлы из Skia в проект Flutter:

    cp -R /path/to/updated/skia/engine/src/flutter/third_party/skia <путь_к_your_flutter_engine>

Шаг 4: Соберите Flutter Engine

  1. Очистите и соберите движок:

    ninja -C out/ios_release -t clean
    ninja -C out/ios_release -j 8
  2. Скопируйте новый 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: Тестирование

  1. Запустите приложение в режиме релиза:

    Убедитесь, что вы используете команду flutter run --release для проверки, устранили ли вы проблему и приложение не выдает ошибок.

Шаг 6: Проверка отсутствия файлов ParagraphSlide.cpp и OneLineShaper.cpp

Если вы не можете найти файлы ParagraphSlide.cpp и OneLineShaper.cpp:

  1. Убедитесь, что вы собираете нужные компоненты Skia. Возможно, вам придется подтянуть последние изменения из основного репозитория или выставить дополнительные флаги сборки.

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

Если после выполнения всех этих шагов проблема с падением приложения сохраняется, рекомендуется зайти на форум Flutter или GitHub для более детального выяснения ситуации.

Оцените материал
Добавить комментарий

Капча загружается...