#ios #swift #xcode
#iOS #swift #xcode #cocoapods
Вопрос:
Я использую Xcode 10.2, Swift 5.
Со схемой отладки проблем не возникает, но со схемой выпуска при сборке или архивировании отображается ошибка команды compileSwift с ненулевым кодом выхода.
Я попытался удалить производные данные / очистить / модуль деинтеграции и модуль установки и модуль обновления. Ни один из этих способов не работает.
Комментарии:
1. не могли бы вы, пожалуйста, сообщить название модулей, которые вы используете
2. попробуйте удалить испорченные модули из файла Podfile и выполнить установку pod. ** если это не сработает, попробуйте: ** Очистить и собрать проект. Снова добавьте модули в файл Podfile и выполните установку модуля pod. Очистите и соберите проект заново, используя реальное устройство, если это возможно. ** попробуйте это, если два вышеуказанных варианта не работают: ** убедитесь, что установлена версия Swift на вашу текущую версию, затем модуль деинтеграции, модуль установки, исправьте это
3. Вот список модулей: Alamofire, Kingfisher, SwiftyJSON, SnapKit, SwifterSwift, ЛайтбОкс @shivi_shub
4. # модуль ‘Alamofire’ # модуль ‘Kingfisher’ # модуль ‘SwiftyJSON’ # модуль ‘SnapKit’, модуль ‘DeviceKit’, модуль ‘PKHUD’, модуль ‘FMDB’ # модуль ‘SwifterSwift’, модуль ‘Tabman’, модуль ‘~> 2.2’, модуль ‘FLEX’, модуль ‘~> 2.0’, модуль ‘MJRefresh’, модуль ‘UITextView заполнитель’, модуль ‘ Багли ‘ # pod ‘Лайтбокс’ pod ‘FSCalendar’ pod ‘RxSwift’, ‘~> 4.0’ pod ‘RxCocoa’, ‘~> 4.0’ вот все модули, которые я использую
5. я думаю, что один из ваших модулей несовместим со swift 5
Ответ №1:
Для моего проекта проблема была связана с pod, Cache
который выдает ошибку, когда значение Optimization Level
for Release
равно Optimize for Speed [-O]
. Я снова установил Compilation Mode
значение Whole Module
и установил уровень оптимизации для модуля в файле pod:
post_install do |installer|
installer.pods_project.targets.each do |target|
# Cache pod does not accept optimization level '-O', causing Bus 10 error. Use '-Osize' or '-Onone'
if target.name == 'Cache'
target.build_configurations.each do |config|
level = '-Osize'
config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = level
puts "Set #{target.name} #{config.name} to Optimization Level #{level}"
end
end
end
end
Ссылка:https://github.com/hyperoslo/Cache/issues/233#issuecomment-477749560
Ответ №2:
Я исправил эту проблему, перейдя в Pods Project, затем в настройки сборки и установив режим компиляции на Инкрементный для выпуска. Затем очистите и заархивируйте, тогда компиляция должна быть выполнена нормально.
Комментарии:
1. Это работает, но сборка архива занимает слишком много времени.
Ответ №3:
Итак, у меня была такая же проблема при обновлении моего проекта до Swift 5. По какой-то причине Cocoapods (последняя версия, 1.6.1) установила для SWIFT_VERSION некоторых модулей значение Swift 5, даже если они выпущены как модули Swift 4, 4.1, 4.2. Поэтому мне пришлось добавить скрипт после установки, который устанавливал исправленную версию swift следующим образом
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == 'CryptoSwift' || target.name == 'SwiftyBeaver'
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.2'
end
end
end
end
Комментарии:
1. Я установил все целевые языковые версии Swift проекта Pod на 4.2 вручную, а также в моем собственном проекте, но все равно это не сработает.
Ответ №4:
У меня возникла та же проблема после обновления до Xcode 10.2. После выполнения приведенных ниже шагов у меня все сработало:
- Модули обновления
- Очистить папку проекта
- Измените языковую версию проекта Pods на неуказанную и (как предложено @Neil Faulkner) Режим компиляции в инкрементный
Ответ №5:
Мне пришлось установить «Уровень оптимизации» в «Swift Compiler — Code Generation» на «Release» — «Без оптимизации [-Onone]» из «Optimize for speed», чтобы заставить кэш передавать архив.
То же самое с SwiftyBeaver
Похоже, проблема связана с Xcode 10.2. Также другие проекты pod, похоже, справляются с оптимизацией, такие как Toucan или XCGLogger.
Ответ №6:
В моем случае это просто появилось, вероятно, потому, что я снова запустил project во время его сборки. Итак, то, что я сделал, было не только чистой, но и очисткой папки моего проекта с помощью
SHITF ALT COMMAND K
также я удалил производные данные, и проект был запущен снова.
Ответ №7:
вы можете выполнить следующие действия…
- Обязательно измените версию Swift на свою текущую версию.
- Обновите все свои модули.
- Очистите все производные данные Xcode.
- Теперь перезагрузите свой Mac.
Вы получаете все эти ошибки только из-за pods..so либо вам необходимо обновить каждый используемый вами модуль.
Комментарии:
1. Спасибо за ответ, но я пробовал все эти шаги, у меня это не сработало.