如何创建依赖RxSwift等库的Swift框架?CocoaPods打包后集成崩溃怎么解决?
崩溃修复方案
你遇到的崩溃是静态框架分发时的典型类加载冲突问题,核心由两个错误配置导致:一是仅编译了模拟器架构的包、未开启Swift框架分发必需的ABI兼容配置;二是编译时将依赖的RxSwift符号打包进了自身框架,和宿主集成时下载的RxSwift产生符号冲突。
具体修复步骤
- 首先修正fastlane构建逻辑,分别编译真机、模拟器两个架构的Release包,再合并为通用xcframework,替换你现有的xcodebuild逻辑:
# 编译真机架构包 xcodebuild( project:"Pods/Pods.xcodeproj", scheme:"BVSweeperKit", configuration: "Release", silent: true, clean: true, build:true, xcargs: "BUILD_LIBRARY_FOR_DISTRIBUTION=YES SKIP_INSTALL=NO -sdk iphoneos" ) # 编译模拟器架构包 xcodebuild( project:"Pods/Pods.xcodeproj", scheme:"BVSweeperKit", configuration: "Release", silent: true, clean: true, build:true, xcargs: "BUILD_LIBRARY_FOR_DISTRIBUTION=YES SKIP_INSTALL=NO -sdk iphonesimulator" ) # 合并为xcframework sh "xcodebuild -create-xcframework \ -framework ./Release-iphoneos/BVSweeperKit.framework \ -framework ./Release-iphonesimulator/BVSweeperKit.framework \ -output ./lib/BVSweeperKit.xcframework"
- 检查你的框架target编译配置,添加
OTHER_LDFLAGS = -ObjC,同时开启DEPLOYMENT_POSTPROCESSING = YES、STRIP_INSTALLED_PRODUCT = YES,确保不会把RxSwift等依赖库的符号打包进自身框架。 - 本地验证时不要直接在框架项目下跑Debug,新建空白项目通过本地development pod方式集成:
pod 'BVSweeperKit', :path => '你的框架本地路径',验证功能正常再上传。
正确的Swift静态框架构建及上传CocoaPods流程
- 编写podspec文件,确认依赖版本、部署目标、静态框架标记等配置无误,你现有podspec的依赖配置无问题。
- 执行本地校验命令:
pod lib lint BVSweeperKit.podspec --allow-warnings,确认无报错。 - 按照上述修正后的fastlane逻辑编译生成xcframework,放到podspec指定的
lib目录下。 - 给仓库打和podspec版本号一致的git tag,推送到远程仓库。
- 执行上传命令:
pod trunk push BVSweeperKit.podspec --allow-warnings,完成CocoaPods发布。 - 新建空白项目远程依赖你的框架,分别在真机、模拟器运行验证无异常。
内容的提问来源于stack exchange,提问作者Novice
相关产品推荐
相关产品推荐

