Чтобы создать MySDK.xcframework, я запускаю:
Код: Выделить всё
xcodebuild build \
-project "MySDK.xcodeproj" \
-scheme "MySDK" \
-destination 'generic/platform=iOS' \
-configuration Release \
-derivedDataPath build \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
OTHER_SWIFT_FLAGS="-no-verify-emitted-module-interface" \
SKIP_INSTALL=NO
xcodebuild -create-xcframework \
-framework "build/Build/Products/Release-iphoneos/MySDK.framework" \
-framework "build/Build/Products/Release-iphonesimulator/MySDK.framework" \
-output "./MySDK.xcframework"
Они добавляются в раздел «Платформы, библиотеки и встроенный контент» как «Встроить и подписать», и мои пути поиска пути выполнения включают эту папку.
В коде я импортирую их с помощью @_implementationOnly import OpenSSL, чтобы они не отображались в сгенерированном .swiftinterface. файл.
Все собирается нормально, но когда я интегрирую MySDK.xcframework в демонстрационное приложение, во время выполнения я получаю эту ошибку:
Код: Выделить всё
dyld[2740]: Library not loaded: @rpath/OpenSSL.framework/OpenSSL
Referenced from: /private/var/containers/Bundle/Application/79ACB4FD-C1E5-45FD-80FC-DA10437EA342/asdfghj.app/Frameworks/MySDK.framework/MySDK
Reason: tried: '/usr/lib/swift/OpenSSL.framework/OpenSSL' (no such file, not in dyld cache),
Если я вручную добавляю OpenSSL.xcframework в основное приложение (рядом с MySDK.xcframework) и встраиваю его, ошибка исчезает.
Почему это происходит только с некоторыми встроенными платформами (например, OpenSSL.xcframework)
и как это сделать мой SDK полностью автономен, поэтому разработчику приложения не нужно вручную встраивать OpenSSL.xcframework?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ing-my-sdk
Мобильная версия