Rak*_*uyo 5 ios swift xcframework
我有一个 XCFramework,其目录结构如下:
\n.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 WechatOpenSDK-XCFramework.xcframework\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Info.plist\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.txt\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ios-arm64_armv7\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Headers\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 WXApi.h\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 WXApiObject.h\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 WechatAuthSDK.h\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Modules\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module.modulemap\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 libWechatOpenSDK.a\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ios-arm64_i386_x86_64-simulator\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Headers\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 WXApi.h\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 WXApiObject.h\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 WechatAuthSDK.h\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Modules\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module.modulemap\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 libWechatOpenSDK.a\nRun Code Online (Sandbox Code Playgroud)\n我添加了Modules目录和module.modulemap文件。XCFramework 最初并不包含这些。
为了module.modulemap文件,我尝试将其定义为:
framework module WechatOpenSDK {\n umbrella header "WXApi.h"\n\n export *\n module * { export * }\n}\nRun Code Online (Sandbox Code Playgroud)\n我也尝试将其定义为:
\nframework module WechatOpenSDK {\n header "WXApi.h"\n header "WXApiObject.h"\n header "WechatAuthSDK.h"\n\n export *\n}\nRun Code Online (Sandbox Code Playgroud)\n但是,当我将 XCFramework 拖到另一个项目中时,无论我如何定义文件module.modulemap,我都无法得到import WechatOpenSDK工作。
Info.plist我还尝试修改XCFramework中顶级文件的内容。我删除了HeadersPath价值为Headers。
我的问题是:有没有办法手动向这个 XCFramework 添加模块映射支持?
\n从你的XCFramework的目录结构来看,忽略Modules你手动添加的目录,你的XCFramework正在打包一组静态库。您很可能使用以下命令构建它:
xcodebuild -create-xcframework -library <path> [-headers <path>] [-library <path> [-headers <path>]...] -output <path>
Run Code Online (Sandbox Code Playgroud)
和你一样,我也尝试过,但未能找到导入静态库或将一组静态库捆绑为模块的 XCFramework 的方法。我尝试将Defines Module静态库的构建设置更改为YES. 我尝试module.modulemap在以下位置手动定义和添加文件:
MyLibrary.xcframeworkMyLibrary.xcframework/ModulesMyLibrary.xcframework/<LibraryIdentifier>MyLibrary.xcframework/<LibraryIdentifier>/ModulesMyLibrary.xcframework/<LibraryIdentifier>/Headers最后,我放弃了,并得出结论:如果我们想将其作为模块导入到其他地方,我们最好定义一个动态框架而不是静态库。否则我们就会逆流而上。当您在 Xcode 中创建 Framework 目标并构建它时,您将看到 Xcode 自动为其提供以下目录结构:
|-- MyFramework.framework (directory)
|-- Info.plist (file)
|-- MyFramework (binary file)
|-- Headers (directory)
|-- Modules (directory)
|-- module.modulemap (file)
Run Code Online (Sandbox Code Playgroud)
如果您将 Swift 文件添加到 Framework 目标,您将看到 Xcode 将以下内容添加到构建的框架中:
MyFramework-Swift.h文件Headers;MyFramework.Swift文件中的模块module.modulemap;和MyFramework.swiftmodule目录中的目录Modules。基本上,Xcode 为我们完成了所有繁重的工作。
当您准备好将框架集打包为 XCFramework 时,请使用以下命令来执行此操作:
xcodebuild -create-xcframework -framework <path> [-framework <path>...] -output <path>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |