Путь обновления XCode для новичков iOS
Путь обновления XCode для новичков iOS

Все причины ошибки XCode

Apple выпустила новую политику, которая требует от вас обновить XCode и ios SDK до 29 апреля 2024 года. Поскольку избежать этого невозможно, организуйте обновление.

Во-первых, чтобы перейти на последнюю версию XCode, вам необходимо сначала обновить macOS.

Поэтому сначала обновите macOS, обновите напрямую с 12 до последней версии 14.

Затем начните обновление XCode 1. Сначала удалите существующую версию XCode, чтобы избежать конфликтов с новой версией XCode. 2. Установите последнюю версию XCode через App Store.

После установки и первого запуска xCode вам все равно потребуется установить SDK объемом более 7G.

Проведя большую часть дня, апгрейд был наконец завершен. Далее мы приступили к проверке проектов компании.

У компании есть два проекта iOS: один — чистый проект Flutter App, а другой — собственный проект iOS. После завершения обновления сначала запустите проект Flutter, и, как и ожидалось, будет сообщено об ошибке.

DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead

Как новичок в iOS, мне пришлось использовать Google для поиска, и я обнаружил, что есть более вероятный ответ. Попробуйте: https://stackoverflow.com/questions/77219650/dt-toolchain-dir-cannot-be-used-to-evaluate-library-search-paths-use-toolchain/77229768#77229768

место назначения обновлено какаоподы

Язык кода:javascript
копировать
sudo gem update cocoapods
Password:
Ignoring ffi-1.15.5 because its extensions are not built. Try: gem pristine ffi --version 1.15.5
Updating installed gems
Updating cocoapods

Обновление какаоподов будет зависать на некоторое время, возможно из-за того, что пакет относительно большой (я включил глобальный прокси, если прокси нет, не знаю, есть ли проблема)

Обновленный журнал выглядит следующим образом

Язык кода:javascript
копировать
sudo gem update cocoapods
Password:
Ignoring ffi-1.15.5 because its extensions are not built. Try: gem pristine ffi --version 1.15.5
Updating installed gems
Updating cocoapods
Fetching xcodeproj-1.24.0.gem
Fetching cocoapods-1.15.2.gem
Fetching cocoapods-core-1.15.2.gem
Fetching cocoapods-downloader-2.1.gem
Successfully installed xcodeproj-1.24.0
Successfully installed cocoapods-downloader-2.1
Successfully installed cocoapods-core-1.15.2
Successfully installed cocoapods-1.15.2
Parsing documentation for xcodeproj-1.24.0
Installing ri documentation for xcodeproj-1.24.0
Installing darkfish documentation for xcodeproj-1.24.0
Parsing documentation for cocoapods-downloader-2.1
Installing ri documentation for cocoapods-downloader-2.1
Installing darkfish documentation for cocoapods-downloader-2.1
Parsing documentation for cocoapods-core-1.15.2
Installing ri documentation for cocoapods-core-1.15.2
Installing darkfish documentation for cocoapods-core-1.15.2
Parsing documentation for cocoapods-1.15.2
Installing ri documentation for cocoapods-1.15.2
Installing darkfish documentation for cocoapods-1.15.2
Done installing documentation for xcodeproj, cocoapods-downloader, cocoapods-core, cocoapods after 9 seconds
Parsing documentation for cocoapods-1.15.2
Parsing documentation for cocoapods-core-1.15.2
Parsing documentation for cocoapods-downloader-2.1
Parsing documentation for xcodeproj-1.24.0
Done installing documentation for cocoapods, cocoapods-core, cocoapods-downloader, xcodeproj after 2 seconds
Gems updated: cocoapods cocoapods-core cocoapods-downloader xcodeproj

Согласно приведенному выше ответу, продолжайте удалять старый кеш и обновляйте библиотеку модулей.

Язык кода:javascript
копировать
weigan@weigandeMacBook-Pro crm_flutter % cd ios
weigan@weigandeMacBook-Pro ios % flutter clean
Changing current working directory to: /Users/weigan/AndroidStudioProjects/crm_flutter
Cleaning Xcode workspace...                                         5.6s
Deleting build...                                                2,510ms
Deleting .dart_tool...                                             325ms
Deleting Generated.xcconfig...                                       0ms
Deleting flutter_export_environment.sh...                            0ms
Deleting Flutter.podspec...                                          1ms
Deleting .flutter-plugins-dependencies...                            1ms
Deleting .flutter-plugins...                                         0ms
weigan@weigandeMacBook-Pro ios % rm Podfile.lock
weigan@weigandeMacBook-Pro ios % rm -rf Pods/
weigan@weigandeMacBook-Pro ios % flutter pub get
Running "flutter pub get" in crm_flutter...                        11.8s
weigan@weigandeMacBook-Pro ios % pod install
Analyzing dependencies
Downloading dependencies
Installing AMap3DMap (9.1.0)
Installing AMapFoundation (1.6.9)
Installing AMapLocation (2.8.0)
Installing AMapSearch (8.1.0)
Installing Bugly (2.5.91)
Installing FMDB (2.7.5)
Installing Flutter (1.0.0)
Installing GTSDK (2.7.1.0)
Installing Toast (4.0.0)
Installing ZXSDK (3.2.4)
Installing amap_flutter_location (0.0.1)
Installing amap_flutter_map (0.0.1)
Installing device_info_plus (0.0.1)
Installing flutter_document_picker (0.0.1)
Installing flutter_keyboard_visibility (0.0.1)
Installing flutter_local_notifications (0.0.1)
Installing flutter_pdfview (1.0.2)
Installing fluttertoast (0.0.2)
Installing getuiflut (0.0.1)
Installing image_gallery_saver (2.0.1)
Installing image_picker (0.0.1)
Installing install_plugin_ygp (0.0.1)
Installing location_service_check (0.0.1)
Installing package_info_plus (0.4.5)
Installing path_provider_foundation (0.0.1)
Installing permission_handler_apple (9.1.1)
Installing shared_preferences_foundation (0.0.1)
Installing sqflite (0.0.2)
Installing url_launcher_ios (0.0.1)
Installing webview_flutter_wkwebview (0.0.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 23 dependencies from the Podfile and 30 total pods installed.
 
[!] Automatically assigning platform `iOS` with version `11.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
 
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `Runner` to `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` or include the `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` in your build configuration (`Flutter/Release.xcconfig`).
 
[!] The `Runner [Debug]` target overrides the `EXCLUDED_ARCHS[sdk=iphonesimulator*]` build setting defined in `Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

здесь,Обновление AMap3DMap (9.1.0) зависло уже давно.,нужно быть терпеливым,Я почти подумал, что это неправильный путь,Закрыть терминал

Продолжайте выполнять команду: обновление модуля.

Язык кода:javascript
копировать
pod update
Update all pods
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing AMap3DMap 9.7.0 (was 9.1.0)
Installing AMapFoundation 1.8.2 (was 1.6.9)
Installing AMapLocation 2.10.0 (was 2.8.0)
Installing AMapSearch 9.7.0 (was 8.1.0)
Installing Bugly 2.5.93 (was 2.5.91)
Installing GTCommonSDK (3.1.0.0)
Installing GTSDK 3.0.5.0 (was 2.7.1.0)
Generating Pods project
Integrating client project
Pod installation complete! There are 23 dependencies from the Podfile and 31 total pods installed.
 
[!] Automatically assigning platform `iOS` with version `11.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
 
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `Runner` to `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` or include the `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` in your build configuration (`Flutter/Release.xcconfig`).
 
[!] The `Runner [Debug]` target overrides the `EXCLUDED_ARCHS[sdk=iphonesimulator*]` build setting defined in `Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

После завершения пошаговой операции продолжаем работу проекта flutter ios, и появляются новые ошибки.

Язык кода:javascript
копировать
Framework 'GTCommonSDK' not found

Покопавшись, я обновил версию SDK согласно описанию официального документа, и тогда все стало нормально. https://docs.getui.com/getui/mobile/ios/xcode/

Продолжайте работу, если операция завершится неудачно, продолжайте сообщать о новой ошибке.

Язык кода:javascript
копировать
Command PhaseScriptExecution failed with a nonzero exit code

По поводу этой проблемы в Интернете существует множество мнений. Самый распространенный ответ — обновить файл. Попробовав, я обнаружил, что он обновлен https://stackoverflow.com/a/75976213/3252800.

Язык кода:javascript
копировать
and edit this section:
if [ -L "${source}" ]; then
    echo "Symlinked..."
    source="$(readlink "${source}")"
  fi
 
to
if [ -L "${source}" ]; then
    echo "Symlinked..."
    source="$(readlink -f "${source}")"
  fi

Позже я нашел новый ответ, в котором говорилось, что версия флаттера слишком старая. https://stackoverflow.com/a/75947102/3252800

Затем попробуйте обновить версию флаттера. Текущая версия — 3.3. Эта проблема была исправлена ​​в версии 3.7. Чтобы избежать слишком большого периода обновления, мы планируем обновиться до 3.7.12, самой маленькой совместимой версии. флаттер здесь, официального способа обновиться до указанной версии нет, она слишком низкая.

После некоторых исследований я нашел способ

1. Непосредственно удалите локальный пакет библиотеки flutter.

2. Перейдите по этой ссылке https://docs.flutter.dev/release/archive?tab=macos, загрузите соответствующий пакет версии флаттера, разархивируйте его и поместите в исходный каталог флаттера.

Запустите команду flutter --version, и она действительно обновится.

Язык кода:javascript
копировать
% flutter --version

┌─────────────────────────────────────────────────────────┐
│ A new version of Flutter is available!                  │
│                                                         │
│ To update to the latest version, run "flutter upgrade". │
└─────────────────────────────────────────────────────────┘
Flutter 3.7.12 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 4d9e56e694 (11 months ago) • 2023-04-17 21:47:46 -0400
Engine • revision 1a65d409c7
Tools • Dart 2.19.6 • DevTools 2.20.1

Продолжайте работать и находите новые ошибки.

После некоторого анализа это не было похоже на ошибку на уровне кода, поэтому я попытался очистить кеш и запустить его снова, но появилась та же ошибка.

Позже, прочитав сообщение об ошибке, я все еще подозревал, что это связано с неработающим кешированием XCode, поэтому я использовал vscode для его компиляции. Первая компиляция зависла при установке, но вторая компиляция прошла успешно.

После успешной компиляции vsCode перекомпилируйте его с помощью xCode, и он будет работать нормально.

Затем продолжайте запускать архив, чтобы проверить, соответствует ли он требованиям App Store.

При проверке произошла ошибка. Судя по информации, она должна быть связана с номером версии. После обновления номера версии продолжите, и появится сообщение о новой ошибке.

Нажмите «Управление». Accounts,Информация об аккаунте будет автоматически обновлена.,подожди несколько минут(Не забудьте отключить здесь прокси-сервер для обхода. Мне всегда не удается включить прокси.

Запустите его еще раз, и, наконец, это удастся

Поскольку версия SDK и флаттер-версия Getui были обновлены в процессе адаптации, это также затронуло Android. В то же время запустите проект crm Android, чтобы проверить, все ли в порядке.

Подтверждено, что это нормально. Вам также необходимо синхронизировать флаттерную версию среды упаковки Android ci с версией 3.7.12, чтобы она соответствовала локально работающей версии.

Для другого чистого iOS-приложения, поскольку оно не основано на Flutter, вам нужно всего лишь изменить целевую версию на 12. Если вы запустите его, вы не обнаружите ошибок, а затем запустите архив, чтобы проверить его, и его не будет. проблема.

Думал все кончено. На следующий день вдруг вылез баг перед выходом в интернет. Информация следующая.

Язык кода:javascript
копировать
*** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UIGraphicsBeginImageContext() failed to allocate CGBitampContext: size={392, -0.66666666666666674}, scale=3.000000, bitmapInfo=0x2006. Use UIGraphicsImageRenderer to avoid this assert.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007ff80049b761 __exceptionPreprocess + 242
    1   libobjc.A.dylib                     0x00007ff800063904 objc_exception_throw + 48
    2   Foundation                          0x00007ff800dabb27 -[NSMutableDictionary(NSMutableDictionary) classForCoder] + 0
    3   UIKitCore                           0x00007ff8055b2628 _UIGraphicsBeginImageContextWithOptions + 702
    4   YGP                                 0x00000001075d5db3 -[UIImageView(Placeholder) layoutPlaceholderImage] + 899
    5   YGP                                 0x00000001075d58e8 -[UIImageView(Placeholder) placeholderImage] + 72
    6   YGP                                 0x0000000107538bf0 -[YGPCarouselContentFillImageCell setContent:] + 320
    7   YGP                                 0x0000000107979669 __44-[YGPHomeOperationBannerCell initializeView]_block_invoke + 569
    8   YGP                                 0x00000001079730e0 -[YGPCarousel setupCustomCell:forIndex:cycleScrollView:] + 176

После расследования выяснилось, что компоненту UIGraphicsBeginImageContext было передано отрицательное значение, что и вызвало сбой https://blog.csdn.net/qq_43441647/article/details/134034413

В системах ниже ios17 также передаются отрицательные значения, но они не приводят к сбою. Кроме того, до обновления XCode проблем не было. После обнаружения проблемы была реализована отказоустойчивость. избегайте передачи отрицательных значений. Проблема решена.

·········· Это обновление заняло в общей сложности полтора дня. Это был извилистый и напряженный процесс. Я записываю это...

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose