Шаг сборки «Копировать стандартные библиотеки» не включает SwiftOnoneSupport.dylib - PullRequest
0 голосов
/ 04 декабря 2018

В последнее время я испытываю тревожную проблему, связанную с запуском тестов в проекте, который имеет зависимость cocoapods от фреймворка, аварийно завершившегося во время выполнения с ошибкой:

Библиотека не загружена: @ rpath / libswiftSwiftOnoneSupport.dylib Ссылка на: MyCocoapodsDependency

Существуют и другие темы, связанные со стековым потоком, об этой конкретной проблеме, но ни одна из них не затрагивает первопричину (например, здесь ),это означает, что на этапе «Скопировать стандартные библиотеки» тестовой сборки отсутствующая библиотека не копируется.

Это выглядит так (это журнал сборки, когда я строю тесты):

missing dylib

Когда это должно выглядеть так(это журнал сборки для тестового приложения, использующего те же самые зависимости):

enter image description here

Кажется, что OnOneSupport связан с настройкой проектаэто имеет отношение к «Оптимизации всего модуля».

enter image description here

Но даже если я перехожу на «not onOne», это не имеет значения.О dylib упоминается в https://github.com/apple/swift/blob/master/cmake/modules/AddSwift.cmake

. Не могу понять, почему он пропущен в шаге построения стандартных библиотек для одной цели, а не для другой, но очевидно, что она нужна моим тестам.Кто-нибудь знает, как я могу заставить компилятор включить SwiftOnoneSupport?

Обходной путь

Добавить этап сборки к цели теста (в файле проекта), которая копирует libswiftSwiftOnoneSupport.dylibв рамки.Дилиб можно найти по адресу:

/ Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / bitcode_strip /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain / usr / lib / swift / iphonesimulator / libswiftSwiftOnoneSupport.dylib

enter image description here

1 Ответ

0 голосов
/ 04 февраля 2019

У меня тоже была такая же проблема с двумя моими фреймворками.Самое странное, что с одним из них все работало нормально, а с другим - нет.

Хотя я не смог понять, почему это происходит (поскольку это, похоже, ошибка XCode ), я смог найти довольно удобный обходной путь.

Оказывается, что использование print() в любом месте вашего кода приведет к загрузке libswiftSwiftOnoneSupport.dylib.Итак, добавив что-то вроде этого, проблема должна исчезнуть:

private func dummy() { 
    print("Hello world!") 
}

Я использую Xcode 10.1, Swift 4.2 и модуль, который давал мне эту проблему, был Nimble.

Надеюсьэто помогает!

...