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

如何将Rust静态库、C FFI层及Swift绑定整合为iOS单XCFramework?

把UniFFI生成的Swift高阶绑定整合到单XCFramework的方案

前置准备

确保你已拥有:

  • 针对iOS设备(aarch64-apple-ios)的静态库 libuniffi_example.a
  • 针对iOS模拟器(x86_64-apple-ios + aarch64-apple-ios-sim)的胖静态库 libuniffi_example.a
  • UniFFI生成的文件:exampleFFI.h、exampleFFI.modulemap、example.swift

步骤1:为各架构创建.framework结构

XCFramework基于多平台的.framework打包,需先为设备和模拟器分别构建包含所有资源的.framework。

设备架构(aarch64-apple-ios)

  1. 创建如下目录结构:
    uniffi_example_device/
    ├── uniffi_example.framework/
    │   ├── Headers/
    │   │   ├── exampleFFI.h
    │   │   └── uniffi_example.h
    │   ├── Modules/
    │   │   └── module.modulemap
    │   ├── uniffi_example
    │   ├── Classes/
    │   │   └── example.swift
    │   └── Info.plist
    
  2. 完成文件填充:
    • 将libuniffi_example.a重命名为uniffi_example,放入框架根目录
    • 在Headers/uniffi_example.h中添加:#import "exampleFFI.h"(作为统一导出的伞头)
    • 替换Modules/module.modulemap内容:
      framework module uniffi_example {
          umbrella header "uniffi_example.h"
          export *
          module * { export * }
          module exampleFFI {
              header "exampleFFI.h"
              export *
          }
      }
      
    • 将example.swift放入Classes/目录
    • 添加符合iOS规范的Info.plist(可从Xcode新建框架项目导出模板,修改Bundle ID、版本号等字段)

模拟器架构(x86_64 + aarch64-apple-ios-sim)

复制上述设备的目录结构,命名为uniffi_example_simulator,替换其中的静态库为模拟器胖静态库,其余文件保持一致。


步骤2:编译.framework(可选)

如果手动创建的结构需要验证编译,可通过Xcode或命令行编译:

# 编译设备版本
xcodebuild -project YourTempProject.xcodeproj -scheme uniffi_example -sdk iphoneos -configuration Release

# 编译模拟器版本
xcodebuild -project YourTempProject.xcodeproj -scheme uniffi_example -sdk iphonesimulator -configuration Release

编译完成后,Xcode会在Build/Products目录下生成对应架构的.framework。


步骤3:打包为XCFramework

执行以下命令,将两个架构的.framework合并为单个XCFramework:

xcodebuild -create-xcframework \
    -framework ./uniffi_example_device/uniffi_example.framework \
    -framework ./uniffi_example_simulator/uniffi_example.framework \
    -output uniffi_example.xcframework

验证使用

将生成的uniffi_example.xcframework导入Xcode项目,直接通过import uniffi_example即可调用高阶Swift绑定API,无需额外引入文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:45:05