执行tccutil命令后,如何恢复iPhone X模拟器的麦克风访问弹窗?
解决iPhone X模拟器麦克风权限提示不弹出且崩溃的问题
我之前也碰到过TCC权限重置后模拟器异常的情况,给你几个亲测有效的解决方案,按顺序尝试应该能解决问题:
重置iPhone X模拟器的所有内容和设置
这是最直接的方法,能把模拟器恢复到初始状态,让权限提示重新触发:- 打开iPhone X模拟器
- 点击顶部菜单栏的
Device->Erase All Content and Settings... - 确认操作后等待模拟器重启,之后重新运行你的APP,应该会弹出麦克风权限请求提示
手动重置模拟器的TCC权限数据库
如果重置模拟器内容没用,可以直接删除模拟器的TCC数据库文件,让系统重新生成:- 先找到iPhone X模拟器的UUID,在终端执行:
xcrun simctl list devices | grep "iPhone X" - 替换下面命令中的
[你的iPhone X模拟器UUID],执行删除操作:rm ~/Library/Developer/CoreSimulator/Devices/[你的iPhone X模拟器UUID]/data/Library/TCC/TCC.db - 重启模拟器并运行APP,此时应该会重新弹出麦克风权限提示
- 先找到iPhone X模拟器的UUID,在终端执行:
确保Xcode本身拥有系统麦克风权限
有时候Xcode的系统权限丢失也会影响模拟器的权限逻辑:- 打开「系统偏好设置」->「安全性与隐私」->「隐私」->「麦克风」
- 点击左下角的锁图标解锁,然后点击
+号,在应用程序里找到Xcode并添加进去 - 重启Xcode和模拟器,再测试权限提示是否正常
清理Xcode缓存
残留的Derived Data也可能导致异常:- 打开Xcode,点击顶部菜单栏的
Xcode->Preferences->Locations - 点击
Derived Data旁边的箭头,打开文件夹后删除里面的所有内容 - 重启Xcode和模拟器,重新运行APP
- 打开Xcode,点击顶部菜单栏的
按上面的步骤操作后,iPhone X模拟器应该会重新每次弹出麦克风访问权限提示,同时崩溃问题也会随之解决(因为权限提示正常后,模拟器的进程逻辑就不会异常了)。
内容的提问来源于stack exchange,提问作者iPhoneProcessor




