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

iOS模块化框架中HTML文件读取失败致视频播放崩溃的解决方案咨询

解决模块化Framework中YTPlayer.html资源找不到的崩溃问题

问题根源

你的YTPlayer.html未被配置为Framework的资源文件,CocoaPods打包时没有将其包含进最终的Framework产物,导致主应用集成后,通过Bundle(for: YouTubePlayerView.self)无法找到该文件,触发强制解包的Fatal error。

解决方案

1. 更新podspec的资源配置

修改spec.resources字段,将YTPlayer.html所在路径加入资源列表。如果需要匹配所有子目录下的html文件,可修改为:

spec.resources = [
    'Training/Training/Assets.xcassets',
    'Training/Training/**/*.html'
]

如果YTPlayer.html有固定路径,也可以直接写具体路径(比如'Training/Training/Resources/YTPlayer.html'),确保精准包含目标文件。

2. 优化路径获取逻辑(可选但推荐)

避免强制解包path(forResource:ofType:)的返回值,增加容错处理,防止后续类似问题导致崩溃:

fileprivate func playerHTMLPath() -> String? {
    return bundle.path(forResource: "YTPlayer", ofType: "html")
}

调用该方法时,先判断返回值是否为nil,再做后续播放逻辑处理。

3. 清理缓存并重新安装Pod

  • 更新Framework版本(比如将spec.version从1.0.15改为1.0.16),推送到Git仓库并打对应tag。
  • 在主应用的Podfile目录下执行:
pod update Training
  • 清理Xcode缓存(Cmd + Shift + K),重新编译主应用,确保资源文件被正确打包进Framework。

关键说明

Framework的所有资源文件必须在podspec的resources或resource_bundles字段中明确声明,否则CocoaPods不会将其纳入打包流程。你之前的配置仅包含了Assets.xcassets,漏掉了HTML资源,这是导致问题的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:40:06