swift 如何使用xcodebuild将静态库导入到Xcode xcframework中,以便iOS应用程序只调用xcframework

rjee0c15  于 2023-04-19  发布在  Swift
关注(0)|答案(1)|浏览(397)

我们有一个适当的iOS静态库,包含Swift和C。我们希望将其可执行文件放入我们的框架项目中,以保护它。
我们在命令行中使用xcodebuild将静态库构建到xcframework中,然后将框架项目的.xcframework导入到我们的测试应用程序中,但得到构建错误“No such module 'M'”。
xcodebuild脚本生成正常...

xcodebuild archive -scheme M -archivePath  build/M-iphoneos.xcarchive -sdk iphoneos SKIP_INSTALL=NO 

xcodebuild -create-xcframework  -library M/Release-iphoneos/libStatic_lib_Swift_C.a  -output  build/M.xcframework

rem  Copy framework executable into test app folder:
cp -R Build/M.xcframework         ../testApp/testApp

更新...
我们将“-framework...”更改为“-library M/Release-iphoneos/libStatic_lib_Swift_C.a”,但应用程序仍然会出现构建错误:“没有这样的模块'M'”
Frameworks的构建设置搜索路径&导入路径=静态库路径。应用的构建设置搜索路径&导入路径= M.xcframework路径。
注意:没有导入.h文件。只有app的一个公共Swift func才能访问静态库。在内部,func调用了一堆C,然后返回inout参数返回给调用app。

7rfyedvj

7rfyedvj1#

把一个静态库放到框架中绝不会“使它更私有”,我假设你只是想发布一个二进制xcframework,这很好。
对于你的问题,你传递了-framework,它要求输出已经是一个框架。但是你有一个静态库。你想传递-library-headers选项来将它捆绑到xcframework中。(注意xcframework和框架不是一回事。)
同时确保你已经阅读了Creating a multiplatform binary framework bundle,特别是关于构建设置的部分。你正在传递SKIP_INSTALL=NO,但是你可能没有按照文档中的要求设置BUILD_LIBRARY_FOR_DISTRIBUTION。

相关问题