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

Xcode静态二进制Swift Package运行时无法找到资源求助

问题:静态二进制Swift Package读取JSON资源时崩溃

我正尝试将现有Swift Package部署为静态framework格式的二进制Swift Package(公司强制要求)。其中一个包包含用作配置存储的JSON资源,但从源码包转为静态framework后,运行时无法找到本该复制到bundle的资源,导致崩溃。

崩溃场景

获取模块bundle资源URL的代码运行时崩溃:

let url = Bundle.module.url(forResource: "sample", withExtension: "json")!

报错信息:

2022-08-23 17:09:54.872641-0600 StaticLibConsumerAppDemo[44944:2189617] StaticLib/StaticLibDemo.swift:6: Fatal error: Unexpectedly found nil while unwrapping an Optional value

临时解决方案及问题

由于Bundle.module是Swift Package专属特性,编译为xcframework时用Xcode/xcodebuild构建会找不到该属性,因此我重新定义了Bundle.module以避免大量修改原有源码(该方案在其他包中成功生效,但此包失效):

import Foundation

// MARK: - BundleFinder
private class BundleFinder {}

extension Bundle {
  static var module = Bundle(for: BundleFinder.self)
}

排查现状

  • sample.json已确认编译进xcframework(可在文件中找到)
  • 二进制包的非资源功能可正常使用,仅在静态二进制代码尝试从bundle获取资源时出错
  • 推测问题要么是资源未正确纳入bundle,要么是运行时找到的bundle并非预期的静态framework bundle,但调试后仍未解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:39:54