Я работаю с настольным приложением для Mac, которое содержит код в swift. Этот код использует библиотеки из MacOS.
Способ включения этих библиотек в наш binding.gyps заключается в следующем:
- Перед компиляцией скопируйте библиотеки из
*/usr/lib/swift/*
в пользовательскую папку
В binding.gyp
файле добавьте следующие зависимости:
"libraries": [
#"-L '../swiftlib/' -lswiftAppKit -lswiftCoreData -lswiftMetal -lswiftCoreImage -lswiftDispatch -lswiftObjectiveC -lswiftDarwin -lswiftFoundation -lswiftXPC -lswiftCoreFoundation -lswiftIOKit -lswiftCoreGraphics -lswiftQuartzCore -lswiftCore",
#"-Wl,-rpath,@loader_path/../../swiftlib"
]
- Модуль компиляции.
У нас есть два компьютера для тестирования: один с версией ОС 10.14.4
и один с версией ОС 10.14.2
.
Если модуль скомпилирован на одном или другом компьютере Mac, появляются несовместимости из-за библиотек.
Ошибка в 10.14.2
при использовании 10.14.4
библиотек:
Error: dlopen(/Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/build/Release/src_cpp.node, 1): Library not loaded: /usr/lib/swift/libswiftAppKit.dylib
Referenced from: /Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/build/Release/src_cpp.node
Reason: image not found
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:166:20)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:740:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:166:20)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:559:12)
at Function.Module._load (internal/modules/cjs/loader.js:551:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at require (internal/modules/cjs/helpers.js:20:18)
at bindings (/Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/node_modules/bindings/bindings.js:112:48)
at Object.<anonymous> (/Applications/MyApp.app/Contents/Resources/app/node_modules/src-native-mac/index.js:5:35)
Ошибка в 10.14.4
при использовании 10.14.2
библиотек:
This copy of libswiftCore.dylib requires an OS version prior to 10.14.4.
Мы хотим иметь возможность распространять это приложение для всех версий Mac без необходимости фактически предоставлять различные продукты. Кроме того, я не уверен, что этот способ включения библиотек является лучшим. Какие варианты у нас есть?