Запуск xctests из Xcode и xcodebuild завершается сбоем, если используется симулятор — dyld: библиотека не загружена: проблема @rpath/libswiftSwiftOnoneSupport.dylib — print()

У меня было странное поведение, когда я запускаю тесты из Xcode или выполняю эту команду из терминала:

xcodebuild test -scheme '<MY_APP>' 

тесты проходят успешно в обоих случаях, хотя во втором случае тесты проходят успешно, однако мне нужно явно указать тестовое устройство. Когда я пытаюсь это сделать и выполняю ту же команду с флагом -destination:

xcodebuild test -scheme '<MY_APP>' -destination "platform=iOS Simulator,name=iPhone XS,OS=latest"

Я получаю эту ошибку:

e2019-02-18 18:39:22.625 xcodebuild[36312:791798] Error Domain=IDETestOperationsObserverErrorDomain Code=6 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted, NSUnderlyingError=0x7f8a38637410 {Error Domain=IDETestOperationsObserverErrorDomain Code=5 "Test runner exited before starting test execution." UserInfo={NSLocalizedDescription=Test runner exited before starting test execution., NSLocalizedRecoverySuggestion=If you believe this error represents a bug, please attach the result bundle at /Users/<MY_USER>/Library/Developer/Xcode/DerivedData/<MY_APP>/Logs/Test/<MY_APP>-2019.02.18_18-37-12-+0100.xcresult}}} Generating coverage data... Generated coverage report: /Users/<MY_USER>/Library/Developer/Xcode/DerivedData/<MY_APP>-fbdolvrdfafpjbenwwqzgnlfkpoa/Logs/Test/Test-<MY_APP>.02.18_18-37-12-+0100.xcresult/1_Test/action.xccovreport Testing failed: <MY_APP>.app (36589) encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted. (Underlying error: Test runner exited before starting test execution.)) ** TEST FAILED **

Другие вещи, которые следует упомянуть: это приложение Cordova. Нативная часть iOS написана на Objective-C. Но я использую некоторые библиотеки, написанные на Swift. Мне нужен xcodebuild для тестирования приложения на моем сервере. Любое предложение, что может вызвать эту проблему? Также в первый раз, когда я выполняю команду без флага назначения, кодирование проходит успешно, но когда я делаю это с флагом назначения, оно пустое:

    CodeSign /Users/<MY_USER>/Library/Developer/Xcode/DerivedData/<MY_APP>-fbdolvrdfafpjbenwwqzgnlfkpoa/Build/Products/Debug-iphonesimulator/<MY_APP>.app/PlugIns/<MY_APP>Tests.xctest (in target: <MY_APP>Tests)
    cd /Users/<MY_USER>/projects/my_project/
    export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate

Signing Identity:     "-"

ОБНОВЛЕНИЕ:

Каким-то образом я мог получить причину проблемы, которая является этой известной ошибкой:

    dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
Referenced from: /Users/<MY_USER>/Library/Developer/CoreSimulator/Devices/5AEAA313-0C65-49D8-BC20-DCC9994719C4/data/Containers/Bundle/Application/48DC52C0-4BC6-45ED-9AEE-A0E1F5C8BA1B/P2P-1-<MY_APP>.app/Frameworks/<REQUIRED_FRAMEWORK>.framework/<REQUIRED_FRAMEWORK>

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


person afraid coder    schedule 18.02.2019    source источник
comment
openradar.appspot.com/27260158 похожая проблема... оказывается, это не имеет значения делать с подписанием   -  person afraid coder    schedule 19.02.2019


Ответы (1)


Поскольку эта ошибка загрузки библиотеки указывала на фреймворк, я застрял...

Я пробовал это: dyld: библиотека не загружена: @rpath/libswiftSwiftOnoneSupport.dylib

Xcode — формат пакета не распознан, недействителен или не подходит

Ссылки на удаленную платформу в файле project.pbxproj

В приложении Always Embed Swift Standard Libraries установлено значение YES, но я не уверен, установлено ли оно на YES в данном фреймворке.

В целом решение было получено из этого вопроса: dyld: библиотека не загружена: @rpath /libswiftSwiftOnoneSupport.dylib

где LuisCien, предлагающий специально использовать print() в любом месте кода, каким-то образом заставит загрузить libswiftSwiftOnoneSupport.dylib, и проблема исчезнет.

Сейчас идут тесты, хотя мне очень любопытно, почему этот хак работает.

Также тесты терпят неудачу только тогда, когда я пытаюсь запустить их с помощью симулятора с Xcode или с помощью xcodebuild.

person afraid coder    schedule 22.02.2019