1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/CarGuo-GSYFlutterBook

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
FLutter-X15.md 9.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 00:06 5767d61

Небольшие хитрости для обновления до Xcode15 в Flutter

Приятный 2024 год начинается с «обновлений», согласно привычкам Apple, начиная со весны 2024 года всем будет необходимо использовать Xcode15 для сборки приложений. Кроме того, в соответствии с «Списком приватности iOS 2024», разработчики Flutter не смогут избежать необходимости обновления до Xcode15.

Кроме того, известно, что установка Xcode15 требует обновления системы до macOS Sonoma, а версия Sonoma не позволяет использовать Xcode14, поэтому после обновления до Sonoma вы заметите, что Xcode не запускается. Не паникуйте, так как обновление Xcode15 теперь занимает всего 3 ГБ+, а установка эмулятора (7 ГБ+) может быть завершена после первичной загрузки.

Примечание: если вам требуется обновиться до Sonoma, но вы хотите временно продолжать использование Xcode14 без понижения версии системы, вы можете активировать установку Xcode14 через командную строку с помощью команды /Applications/Xcode.app/Contents/MacOS/Xcode, а затем компилировать проект через командную строку.

Теперь давайте приступим к обновлению до Xcode15!

Проблемы с аварийным завершением работыИспользуя Xcode 15 для сборки Flutter, вы можете столкнуться с проблемой аварийного завершения работы приложения на реальных устройствах с iOS ниже 17-й версии, эта проблема была отмечена в #136060. Причины проблемы часто связаны с использованием плагинов, таких как connectivity_plus. Однако основная причина заключается в баге самого Xcode.

Решение этой проблемы довольно простое — нужно установить значение IPHONEOS_DEPLOYMENT_TARGET на 12.0. Иногда Xcode может удалить неподдерживаемые значения IPHONEOS_DEPLOYMENT_TARGET, что приведёт к использованию самой новой версии (17.0), что в свою очередь сделает невозможным запуск приложения на устройствах с iOS ниже 17-й версии.

Аналогичная проблема наблюдается и в плагинах типа connectivity_plus 4.xx, где значение IPHONEOS_DEPLOYMENT_TARGET установлено на 11.0, а в последней версии connectivity_plus 5.0.0 это значение было увеличено до 12 для решения проблемы.

Если значение IPHONEOS_DEPLOYMENT_TARGET в вашем плагине влияет на процесс компиляции, вы также можете добавить config.build_settings.delete в профиле для принудительного удаления этого значения.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |configuration|
      configuration.build_settings.delete('IPHONEOS_DEPLOYMENT_TARGET') # добавьте это
  end
end

Сейчас эта проблема обычно возникает при запуске в эмуляторе, но основной причиной является использование Xcode 15 с IPHONEOS_DEPLOYMENT_TARGET версией iOS 11 (ранее это был минимальный уровень по умолчанию для Flutter). При использовании этого Networking фреймворка происходит аварийное завершение работы:- 16.x -> Краш

  • 17.0.x -> Нормально

Поэтому при переходе на Xcode 15 рекомендуется протестировать приложение на реальном устройстве с версией 16.x, чтобы проверить наличие такой же проблемы. В настоящее время проблема связана с тем, что iOS использует Network, когда целевой объект имеет версию iOS 11.

При компиляции также могут появиться предупреждения:

…/Test737672.xcodeproj Целевая платформа iOS 'IPHONEOS_DEPLOYMENT_TARGET' установлена на 11.0, но допустимый диапазон целевых платформ составляет от 12.0 до 17.0.99.

Проблема с Flutter/Flutter.h

Проблема с Flutter в Xcode 15 была представлена в #135099 и связана с Cocoapods. Эта проблема может быть связана с DT_TOOLCHAIN_DIR не может быть использована для оценки LIBRARY_SEARCH_PATHS; следует использовать TOOLCHAIN_DIR вместо него.

На основе отзывов в большинстве случаев достаточно обновить Cocoapods до версии v1.13.0 и выше, чтобы решить эту проблему. После обновления важно выполнить команду pod install вручную, чтобы убедиться, что всё работает корректно. Однако если вы не хотите обновлять Cocoapods, можно временно исправить проблему через CocoaPods #12012#issuecomment-1659803356.post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| xcconfig_path = config.base_configuration_reference.real_path xcconfig = File.read(xcconfig_path) xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR") File.open(xcconfig_path, "w") { |file| file.puts xcconfig_mod } end end end> PS, если вы не знаете, где застряли при обновлении pod, вы можете использовать gem install cocoapods -v 1.13.0 -V для просмотра подробного лога операций. Если проблема связана с сетью, вы можете использовать gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ для решения этой проблемы. Вы можете использовать gem sources -l для просмотра адреса зеркала.

Библиотека 'iconv.2.4.0' не найдена

Если вы столкнулись с такой ошибкой при запуске в Xcode 15, не верьте совету "добавить '-ld64' в other link flags". Вместо этого откройте раздел Build Phases > Link Binary With Libraries, найдите там библиотеку iconv.2.4.0 и удалите её. Затем добавьте библиотеку iconv.2, так как в Xcode 15 доступна только эта версия.

Ошибка (Xcode): Библиотека 'iconv.2.4.0' не найдена

Ошибка (Xcode): Команда линковщика завершилась с кодом выхода 1 (используйте -v для просмотра вызова)

Изображение

Изображение

Изображение

Если проблема всё ещё присутствует, выполните глобальный поиск 'iconv.2.4.0', затем замените все упоминания этой библиотеки на iconv.2.

ИтогТаким образом, основные проблемы с адаптацией Xcode 15 решены. Больше всего времени потребовалось на соответствие требованиям «Списка конфиденциальности iOS 2024», что является требованием проверки. Эти требования довольно субъективны, поэтому важно понять их дух. В целом, если ваш проект на Flutter работает корректно в Xcode 15, то можно считать его готовым к использованию.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/CarGuo-GSYFlutterBook.git
git@api.gitlife.ru:oschina-mirror/CarGuo-GSYFlutterBook.git
oschina-mirror
CarGuo-GSYFlutterBook
CarGuo-GSYFlutterBook
master