carplay setRootTemplate 崩溃(允许 类: (null))

carplay setRootTemplate crash (Allowed classes: (null))

我正在从旧 carplay 过渡到新 ios15 carplay。

我问了apple的carplay权限,现在有了

所以我放了一些示例代码和 运行。

密码是

func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController) {
    CPLogger.log("in templateApplicationScene didConnect")
    self.interfaceController = interfaceController
    let screen = CPListTemplate(title: "CarPlay", sections: [])
    self.interfaceController!.setRootTemplate(screen, animated: true, completion: { _,_ in
        })
    }

这个方法被击中了,所以我想我是从 info.plistApplication Scene Manifest 中得到的。

在那之后我遇到了崩溃,它说(在这种情况下最后一部分很重要。)

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported object <CPListTemplate: 0x600001c79b80> <identifier: 8105D933-642B-4111-80D7-C910466237F5, userInfo: (null), tabTitle: (null), tabImage: (null), showsTabBadge: 0> passed to setRootTemplate:animated:completion:. Allowed classes: (null)'

大多数搜索结果都有类似 Thread 1: "Unsupported object <CPInformationTemplate: 0x6000012de010> <identifier: 3444D3F1-ECFF-4953-B543-459286E11371, userInfo: (null), tabTitle: (null), tabImage: (null), showsTabBadge: 0> passed to setRootTemplate:animated:completion:. Allowed classes: {(\n CPTabBarTemplate,\n CPListTemplate,\n CPGridTemplate,\n CPAlertTemplate,\n CPVoiceControlTemplate,\n CPNowPlayingTemplate\n)}" 的消息。

Allowed classes部分有一些信息。但不是我的。

我在权利信息中添加了正确的信息

我有一个包含 carplay-audio 选项的配置。

我只有一个结果包含 'Allowed classes: (null)' 字符串,即 https://githubmemory.com/@oguzhnatly

他说“这样的事情 Allowed 类: (null) 几乎不可能发生。通常,它必须包含 CarPlay 模板的名称。”

而且我没有有用的东西。

现在我完全迷路了...

帮帮我!

谢谢

根据 CarPlay 应用程序的类型,您可以使用不同的模板,也可以使用不同的模板。在 CarPlay Programming GuideSections 部分,您可以看到音频应用程序允许哪些模板。此外,我认为只允许列表或选项卡模板作为根模板。您要将哪个模板设置为 root?

我在切换到 M1 MBP 后开始得到这个。我尝试将哪种类型的模板设置为根模板并不重要。仍然适用于我的旧 Intel Mac,所以它似乎是一个 M1 错误。

编辑:我修好了!

在 Apple Dev Forums 转了一圈后,我发现有人遇到了同样的问题,但问题是在将 arm64 添加到 Excluded Architectures 后才出现的。

我也添加了这个来让 Google Places SDK 编译,所以删除它很棘手。但是Google已经发布了一个beta version的兼容M1的SDK,但是需要手动或者通过Carthage安装。我删除了旧的 SDK,从 EXCLUDED_ARCHS 中删除了 arm64,安装了 beta SDK 并且它工作了!现在我可以在 M1 上毫无错误地使用 CarPlay Simulator。希望这对您有所帮助!