For the complete documentation index, see llms.txt. This page is also available as Markdown.

为 macOS 通用应用构建

概述

在为 macOS 构建 Unity 项目时,开发者可能会遇到麦克风权限问题,尤其是在同时面向 Intel 和 Apple Silicon Mac 时。本文档概述了该问题、症状、原因和解决方案,以帮助确保在不同 Mac 架构上都能成功访问麦克风。

问题描述

一些用户报告称,在构建 macOS 通用应用时,Apple Silicon Mac 能够正常处理麦克风权限,而 Intel Mac 由于架构差异,可能无法访问麦克风。这可能导致麦克风无响应、DLL 找不到异常、错误消息、应用程序可能崩溃,或检测不到音频输入。

原因

该问题源于 grpc_csharp_ext.bundle,它对 Unity 项目中的网络通信至关重要。该 DLL 针对 Intel 和 Apple Silicon 架构有各自的版本,无法轻易合并或通用于所有架构。目前 grpc 库尚未针对在 Unity 中解决这些 dll 问题提供专门支持。

解决方案

独立版构建设置

  • 对于 Intel Mac: 使用专门面向 Intel 架构的独立版构建,以确保兼容性。

  • 对于 Apple Silicon Mac: 为了获得最佳性能,优先选择针对 ARM64 框架的独立版构建,不过 Universal 构建也是一种选择。

从 Intel Mac 构建 Universal 版的新流程

在 Intel Mac 上完成 Universal 构建后,您必须手动更新 grpc_csharp_ext.bundle 以确保正常运行。请按以下步骤操作:

  1. 找到 .app 文件,该文件由构建过程生成。

  2. 右键单击 .app 文件并选择“显示包内容”。

  3. 导航到 Contents/Plugins 包内的文件夹。

  4. 将此文件夹的内容替换为所提供插件文件夹中的组件(插件文件夹链接).

重要:grpc_csharp_ext.bundle 在从 Intel Mac 构建时,可能不会正确包含在最终构建中。始终验证 Plugins 文件夹中包含的是正确的 DLL。如果有任何疑问或 DLL 缺失,请将 Plugins 文件夹的内容替换为我们提供的文件夹内容。


结论

为 macOS 构建需要仔细考虑 Intel 和 Apple Silicon 这两种不同架构。目前最佳实践是使用针对目标 Mac 特定架构定制的独立版构建设置。随着我们的推进,我们将提供一个更集成的 DLL 管理方案,从而简化通用 macOS 应用程序的开发流程。

最后更新于

这有帮助吗?