You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

xcframework开发最佳实践及工作流搭建咨询

XCFramework开发最佳实践与实时预览工作流方案

针对你关注的XCFramework开发工作流架构、实时预览框架变更,以及SPM方案的最优实践,整理了以下实用方案和建议:

一、实现框架变更实时预览的核心方案

1. Swift Package Manager(SPM)本地依赖+私有仓库流

这是目前最简洁高效的方案,完全避免临时变更的麻烦:

  • 项目结构拆分:把XCFramework的代码单独做成SPM包,目录结构如下:
    MyFramework/
    ├── Sources/
    │   └── MyFramework/  # 框架核心代码
    ├── Tests/
    │   └── MyFrameworkTests/  # 单元测试
    └── Package.swift  # SPM配置文件
    
  • 示例应用本地依赖:在示例项目中添加本地路径依赖,Xcode里直接选「Add Package Dependency」→「Add Local...」选择框架的根目录,或者在示例的Package.swift中写:
    dependencies: [
        .package(path: "../MyFramework")
    ]
    
    这样修改框架代码后,示例应用编译时会自动拉取最新代码,实时看到效果,完全不需要替换.framework文件。
  • 发布阶段自动化:用脚本一键生成多架构XCFramework,比如:
    # 归档真机版本
    xcodebuild archive \
      -scheme MyFramework \
      -destination "generic/platform=iOS" \
      -archivePath "./build/ios.xcarchive" \
      SKIP_INSTALL=NO \
      BUILD_LIBRARY_FOR_DISTRIBUTION=YES
    
    # 归档模拟器版本
    xcodebuild archive \
      -scheme MyFramework \
      -destination "generic/platform=iOS Simulator" \
      -archivePath "./build/iossimulator.xcarchive" \
      SKIP_INSTALL=NO \
      BUILD_LIBRARY_FOR_DISTRIBUTION=YES
    
    # 合并成XCFramework
    xcodebuild -create-xcframework \
      -framework "./build/ios.xcarchive/Products/Library/Frameworks/MyFramework.framework" \
      -framework "./build/iossimulator.xcarchive/Products/Library/Frameworks/MyFramework.framework" \
      -output "./build/MyFramework.xcframework"
    
    之后把SPM包推到私有Git仓库,示例应用正式环境可以通过仓库URL依赖,开发时切换本地路径即可,用Git分支管理开发/发布状态,不用丢弃临时变更。

2. Xcode工作区(Workspace)联动方案

如果偏好传统Xcode项目结构,用工作区也能实现实时预览:

  • 创建一个.xcworkspace,把框架的.xcodeproj和示例应用的.xcodeproj都加进去
  • 在示例应用的「Frameworks, Libraries, and Embedded Content」中添加框架的target(不是打包好的二进制文件),这样修改框架代码后,编译示例应用会自动同步框架的最新版本,实时生效。
  • 打包XCFramework时直接在框架项目里执行脚本,示例应用的依赖配置不用动,因为工作区依赖的是源码target,不是二进制。

二、XCFramework通用最佳实践

  • 必须开启BUILD_LIBRARY_FOR_DISTRIBUTION:这个开关是XCFramework正确分发的核心,确保生成的框架包含完整的模块接口(.swiftinterface),避免下游项目编译时出现符号找不到的问题。
  • 多架构统一构建:一定要同时构建真机(arm64)和模拟器(x86_64/arm64)架构,用官方的xcodebuild -create-xcframework命令合并,不要手动用lipo合并,容易出现符号冲突或架构不兼容。
  • 严格版本化:无论是SPM包还是XCFramework,都要遵循语义化版本(SemVer),用Git tag标记版本(比如v1.0.0),方便下游项目依赖特定版本。
  • 自动化测试前置:在框架项目里集成单元测试和UI测试,每次打包XCFramework前自动运行测试,避免带着bug发布。
  • 脚本化打包:把构建流程写成Shell脚本或Fastlane lane,减少手动操作的错误,比如Fastlane示例:
    lane :build_xcframework do
      # 先运行测试
      scan(scheme: "MyFrameworkTests")
      # 归档真机
      xcodebuild(
        scheme: "MyFramework",
        destination: "generic/platform=iOS",
        archive_path: "./build/ios.xcarchive",
        skip_install: false,
        build_library_for_distribution: true
      )
      # 归档模拟器
      xcodebuild(
        scheme: "MyFramework",
        destination: "generic/platform=iOS Simulator",
        archive_path: "./build/iossimulator.xcarchive",
        skip_install: false,
        build_library_for_distribution: true
      )
      # 生成XCFramework
      sh("xcodebuild -create-xcframework -framework ./build/ios.xcarchive/Products/Library/Frameworks/MyFramework.framework -framework ./build/iossimulator.xcarchive/Products/Library/Frameworks/MyFramework.framework -output ./build/MyFramework.xcframework")
    end
    

三、对你当前做法的优化建议

你现在临时导入xcodeproj并替换.framework的方式,容易产生不必要的Git变更,建议替换成:

  • 用SPM本地依赖或Xcode工作流,完全不用修改示例应用的依赖配置
  • 开发时专注框架代码,示例应用自动同步变更,无需手动替换二进制
  • 发布阶段用脚本一键生成XCFramework,直接推送到私有仓库或分发渠道,流程更可控

内容的提问来源于stack exchange,提问作者nja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:22:20