Xcode 10.2, Swift 5, сбой командной компиляции при сборке программы со схемой выпуска

#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. После выполнения приведенных ниже шагов у меня все сработало:

  1. Модули обновления
  2. Очистить папку проекта
  3. Измените языковую версию проекта 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:

вы можете выполнить следующие действия…

  1. Обязательно измените версию Swift на свою текущую версию.
  2. Обновите все свои модули.
  3. Очистите все производные данные Xcode.
  4. Теперь перезагрузите свой Mac.

Вы получаете все эти ошибки только из-за pods..so либо вам необходимо обновить каждый используемый вами модуль.

Комментарии:

1. Спасибо за ответ, но я пробовал все эти шаги, у меня это не сработало.