Electron-Mac-摄像头麦克风硬件权限问题

背景

electron项目在mac端使用硬件设备无权限问题

解决办法

Step1. 修改yml配置文件

# electron-build-prod.yml 
// ... 
mac: 
    // ... 
    hardenedRuntime: true 
    entitlements: "build/entitlements.mac.plist" 
    extendInfo: 
        NSMicrophoneUsageDescription: "XXX需要使用您的麦克风"
        NSCameraUsageDescription: "XXX需要使用您的摄像头"

这两个属性用于说明你的应用为什么要申请权限

hardenedRuntime 这个属性,在 electron-builder 的 21.1.3 版本已经默认为 true ,而在 21.1.2 ~ 20.41.0 版本里,这个属性的默认值是 false;

申请的行为需要利用 entitlements 属性(指向下文的entutlements.mac.plist文件);

Step2. 修改entutlements.mac.plist文件

# entutlements.mac.plist
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>\
        <key>com.apple.security.cs.allow-jit</key>
        <true/>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
        <key>com.apple.security.cs.allow-dyld-environment-variables</key>
        <true/>
        <key>com.apple.security.device.audio-input</key>
        <true/>
        <key>com.apple.security.device.camera</key>
        <true/>
    </dict>
</plist>

除了要指定申请摄像头、麦克风的权限,需要以下的属性:

当你开启了 hardenedRuntime 来加强应用的安全性时,那么你需要把这个安全性放宽一点。也就是说你需要在 entitlements.mac.plist 里在指定一下下面的属性:

posted @ 2025-12-31 15:21  lamhoo  阅读(1)  评论(0)    收藏  举报