Все причины ошибки 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
место назначения обновлено какаоподы
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
Обновление какаоподов будет зависать на некоторое время, возможно из-за того, что пакет относительно большой (я включил глобальный прокси, если прокси нет, не знаю, есть ли проблема)
Обновленный журнал выглядит следующим образом
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
Согласно приведенному выше ответу, продолжайте удалять старый кеш и обновляйте библиотеку модулей.
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) зависло уже давно.,нужно быть терпеливым,Я почти подумал, что это неправильный путь,Закрыть терминал
Продолжайте выполнять команду: обновление модуля.
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, и появляются новые ошибки.
Framework 'GTCommonSDK' not found
Покопавшись, я обновил версию SDK согласно описанию официального документа, и тогда все стало нормально. https://docs.getui.com/getui/mobile/ios/xcode/
Продолжайте работу, если операция завершится неудачно, продолжайте сообщать о новой ошибке.
Command PhaseScriptExecution failed with a nonzero exit code
По поводу этой проблемы в Интернете существует множество мнений. Самый распространенный ответ — обновить файл. Попробовав, я обнаружил, что он обновлен https://stackoverflow.com/a/75976213/3252800.
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, и она действительно обновится.
% 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. Если вы запустите его, вы не обнаружите ошибок, а затем запустите архив, чтобы проверить его, и его не будет. проблема.
Думал все кончено. На следующий день вдруг вылез баг перед выходом в интернет. Информация следующая.
*** 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 проблем не было. После обнаружения проблемы была реализована отказоустойчивость. избегайте передачи отрицательных значений. Проблема решена.
·········· Это обновление заняло в общей сложности полтора дня. Это был извилистый и напряженный процесс. Я записываю это...