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

如何将DocC生成的文档与XCFramework一同分发并让Xcode识别?

解决XCFramework集成后DocC文档无法通过Option点击查看的问题

核心问题原因

XCFramework默认不会自动将DocC生成的文档索引整合到Xcode的符号体系中,即便.swiftdoc文件存在于XCFramework内部,Xcode也无法直接关联到对应符号上。

实现步骤

1. 生成独立的DocC归档文件

先为框架生成.doccarchive格式的文档归档,执行以下命令:

xcodebuild docbuild -scheme YourFrameworkScheme -destination 'generic/platform=iOS' -derivedDataPath ./build

归档文件会生成在./build/Build/Products/Debug-iphoneos/YourFramework.doccarchive路径下。

2. 将DocC归档嵌入XCFramework打包流程

修改打包脚本,在生成XCFramework前,把.doccarchive复制到各架构归档的对应目录中:

# 先归档不同架构的framework
xcodebuild archive -scheme YourFrameworkScheme -destination 'generic/platform=iOS' -archivePath ./build/ios-arm64 SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild archive -scheme YourFrameworkScheme -destination 'generic/platform=iOS Simulator' -archivePath ./build/ios-x86_64 SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES

# 复制doccarchive到每个归档的framework目录下
cp -r ./build/Build/Products/Debug-iphoneos/YourFramework.doccarchive ./build/ios-arm64.xcarchive/Products/Library/Frameworks/
cp -r ./build/Build/Products/Debug-iphonesimulator/YourFramework.doccarchive ./build/ios-x86_64.xcarchive/Products/Library/Frameworks/

# 生成包含文档的XCFramework
xcodebuild -create-xcframework -framework ./build/ios-arm64.xcarchive/Products/Library/Frameworks/YourFramework.framework -framework ./build/ios-x86_64.xcarchive/Products/Library/Frameworks/YourFramework.framework -output ./YourFramework.xcframework

3. 验证XCFramework结构

最终生成的XCFramework每个架构子目录下,需同时存在YourFramework.framework和YourFramework.doccarchive。Xcode集成后会自动识别归档,此时按住Option点击符号即可正常查看文档。

4. SPM分发的额外配置(若适用)

如果通过Swift Package Manager分发XCFramework,需在Package.swift中指定文档资源:

let package = Package(
    name: "YourFramework",
    products: [
        .library(name: "YourFramework", targets: ["YourFramework"]),
    ],
    targets: [
        .binaryTarget(
            name: "YourFramework",
            path: "./YourFramework.xcframework",
            resources: [
                .process("YourFramework.doccarchive")
            ]
        ),
    ]
)

关键注意事项

  • 必须开启BUILD_LIBRARY_FOR_DISTRIBUTION=YES,确保框架符号与文档的分发兼容性。
  • 清理Xcode缓存(Cmd+Shift+K)并重启Xcode后再测试,避免旧缓存干扰结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:05:04