使用 CarPlay 框架的 CarPlay 应用在 iOS 13 或更早版本上崩溃

Posted

技术标签:

【中文标题】使用 CarPlay 框架的 CarPlay 应用在 iOS 13 或更早版本上崩溃【英文标题】:CarPlay app using CarPlay framework crashes on iOS 13 or older version 【发布时间】:2021-10-20 23:47:52 【问题描述】:

我正在开发一款适用于 ios 14 和 ios 13 的 CarPlay 音频应用。

我按照此处的指南使用适用于 iOS 13 的媒体播放器框架和适用于 iOS 14 或更高版本的 CarPlay 框架。 https://developer.apple.com/documentation/carplay/supporting_previous_versions_of_ios?language=objc

它在 iOS 14 上运行良好,但在 iOS 13/12 上崩溃

dyld:未找到符号:OBJC_CLASS$_CPNowPlayingAddToLibraryButton

我发现使用以下类会导致应用崩溃。

CPNowPlayingAddToLibraryButton CPNowPlayingRepeatButton CPNowPlayingShuffleButton CPNowPlayingImageButton

在运行早期版本的 iOS 时,仅添加其中一个类会导致崩溃。

CPNowPlayingAddToLibraryButton* addToButton = [CPNowPlayingAddToLibraryButton.alloc initWithHandler:^(CPNowPlayingAddToLibraryButton*)

    ...
];

【问题讨论】:

【参考方案1】:

您需要弱链接 CarPlay 框架。在目标的构建阶段中,转到 Link Binary With Libraries 部分并检查 CarPlay 是否已经存在(如果没有则添加)。然后确保状态设置为可选

【讨论】:

以上是关于使用 CarPlay 框架的 CarPlay 应用在 iOS 13 或更早版本上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用 CPNowPlaying ImageButton 时,CarPlay 正在播放屏幕在深色外观上显示错误图像

CarPlay 的 UI 测试

从 Xcode 12 CarPlay 模拟器启动时,CarPlay 停车应用程序崩溃

CarPlay:从 Spotify 等移动设备的后台杀死应用程序时,如何从 CarPlay 装置关闭应用程序?

从 Xcode 12.5.1 CarPlay 模拟器启动时,CarPlay 停车应用程序崩溃

如何为现有 iOS 应用添加 CarPlay 支持? [复制]