如何构建可同时适配iOS与tvOS的CoreBluetooth封装跨平台框架
提问内容
我正尝试构建一个可同时嵌入iOS和tvOS应用的跨平台框架,该框架不含任何UI相关内容,仅为CoreBluetooth的封装层。
我已尝试的操作:
将基础SDK分别设置为tvOS和iOS时,框架均可正常编译,但我不清楚如何实现同时适配两个平台的效果。
请问如何实现框架同时支持iOS和tvOS双平台?
解决方案
你可以通过以下两种主流方案实现双平台支持:
方案1:配置项目原生支持多平台(推荐开发阶段使用)
- 打开项目的
Build Settings面板,找到Supported Platforms选项,添加iOS和tvOS两个平台 - 分别设置iOS和tvOS对应的最低部署版本(Deployment Target),建议选择两个平台都支持的系统版本区间,CoreBluetooth在iOS和tvOS的接口重合度极高,无UI依赖的前提下基本不需要额外适配
- 如果存在少量平台专属代码,可以用系统宏做条件编译:
#if os(iOS) // iOS 平台专属逻辑 #elseif os(tvOS) // tvOS 平台专属逻辑 #endif
- 编译时直接选择对应平台的模拟器或设备,即可生成对应平台的framework产物。如果使用CocoaPods管理组件,只需在podspec中补充双平台声明即可:
s.ios.deployment_target = '12.0' s.tvos.deployment_target = '12.0'
方案2:打包为XCFramework(推荐发布阶段使用)
XCFramework是苹果官方推出的跨平台框架格式,可同时包含多平台、多架构的二进制产物,直接导入即可在双平台项目中使用。操作步骤如下:
- 分别编译iOS和tvOS对应的framework包,执行以下命令:
# 编译iOS(设备+模拟器)版本 xcodebuild build -project YourFramework.xcodeproj -scheme YourFramework -destination "generic/platform=iOS" -destination "generic/platform=iOS Simulator" BUILD_DIR=./build # 编译tvOS(设备+模拟器)版本 xcodebuild build -project YourFramework.xcodeproj -scheme YourFramework -destination "generic/platform=tvOS" -destination "generic/platform=tvOS Simulator" BUILD_DIR=./build
- 合并多平台产物生成XCFramework:
xcodebuild -create-xcframework \ -framework ./build/Release-iphoneos/YourFramework.framework \ -framework ./build/Release-iphonesimulator/YourFramework.framework \ -framework ./build/Release-appletvos/YourFramework.framework \ -framework ./build/Release-appletvsimulator/YourFramework.framework \ -output ./YourFramework.xcframework
生成的XCFramework直接导入对应项目即可同时在iOS和tvOS中使用。
内容的提问来源于stack exchange,提问作者Heili Stanislas
相关产品推荐
相关产品推荐

