SwiftUI macOS VideoPlayer 仅在 Notarized(分布式)应用程序中查看崩溃

Myk*_*kel 2 video-player avkit swiftui

简而言之,我的 macOS 应用程序纯粹用 SwiftUI 编写,使用 VideoPlayer 来呈现本地存储的视频(未捆绑)。相关代码如下:

import SwiftUI
import AVKit

struct CustomizedPlayerView: View {
    @State var player: AVPlayer?

    var body: some View {
        VStack {
            if let avPlayer = self.player {
                VideoPlayer(player: avPlayer).frame(minWidth: 320, minHeight: 320)
            }
            Text("Problematic VideoPlayer View")
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

在 Xcode 中进行开发构建时,没有任何问题(没有崩溃,没有播放问题)。

但是,在经过公证的应用程序中打开视图会导致整个应用程序崩溃并显示Exception Type: EXC_CRASH (SIGABRT). 这向我发出信号,系统正在中止我的应用程序,因为零值的分配不正确,但播放器似乎在崩溃时传递了一个非零值。

经过一番调试和研究后我发现了这个问题。我想分享对我有用的方法,并希望它能节省别人的时间。

Myk*_*kel 5

答案是AVKit.framework手动添加到Xcode 中的Link Binary With Libraries应用程序目标中Build Phases

将 AVKit 框架与库链接

事实证明,SwiftUI AVKit 的VideoPlayer视图在存档应用程序中为零,可能未使用 AVKit 链接或构建。

本博文来源:Source。这一切都归功于 SwiftUI 实验室的 Javier。令人惊讶的是,这个问题似乎从 2020 年 6 月左右就存在了。

错误报告:FB8928032