Приятный 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!
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 -> Краш
Поэтому при переходе на Xcode 15 рекомендуется протестировать приложение на реальном устройстве с версией 16.x, чтобы проверить наличие такой же проблемы. В настоящее время проблема связана с тем, что iOS использует Network
, когда целевой объект имеет версию iOS 11.
При компиляции также могут появиться предупреждения:
…/Test737672.xcodeproj Целевая платформа iOS 'IPHONEOS_DEPLOYMENT_TARGET' установлена на 11.0, но допустимый диапазон целевых платформ составляет от 12.0 до 17.0.99.
Проблема с 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
для просмотра адреса зеркала.
Если вы столкнулись с такой ошибкой при запуске в 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.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )