如何在模拟器中重置钥匙串?
Posted
技术标签:
【中文标题】如何在模拟器中重置钥匙串?【英文标题】:How do I reset the keychain in simulator? 【发布时间】:2015-09-21 01:21:39 【问题描述】:我在模拟器钥匙串中存储了一些敏感数据的数据。 现在我必须测试如果该数据不存在会发生什么。
但我无法重置模拟器的钥匙串来测试它。
我已尝试从模拟器中删除该应用,然后重置内容和设置。但钥匙串数据仍然存在。
编辑:是的,我已尝试“重置内容和设置”,但这不起作用
【问题讨论】:
菜单中有一个选项:“ios 模拟器”->“重置内容和设置”。 :) 试过了。不工作 【参考方案1】:最简单的方法是打开你的模拟器并转到:
"iOS Simulator -> Reset Content and Settings"
这将重置模拟器中的所有内容并将其恢复为默认设置。
如果你想通过代码做到这一点,你可以这样做:
NSArray *secItemClasses = @[(__bridge id)kSecClassGenericPassword,
(__bridge id)kSecClassInternetPassword,
(__bridge id)kSecClassCertificate,
(__bridge id)kSecClassKey,
(__bridge id)kSecClassIdentity];
for (id secItemClass in secItemClasses)
NSDictionary *spec = @(__bridge id)kSecClass: secItemClass;
SecItemDelete((__bridge CFDictionaryRef)spec);
【讨论】:
实际上,“iOS 模拟器 -> 重置内容和设置”并不能解决问题。 “重置内容和设置”相当于设备恢复,(这将重置您的钥匙串)如果“重置内容和设置”不这样做,那么,这听起来像是模拟器中的错误. 不确定苹果做了什么,但“重置内容和设置”甚至不再从模拟器中删除应用程序...... 你用的是什么版本的模拟器? 只是对 2019 年遇到此问题的任何人的更新:我做了硬件 > 擦除所有内容和设置,它确实清除了钥匙串。【参考方案2】:重置内容和设置有时无法正常工作。如果它不起作用,请再试一次。如果它真的一直不工作,退出Simulator.app
,等待几秒钟,然后从终端运行xcrun simctl erase <Device UDID>
。您可以通过运行xcrun simctl list
获取设备的UDID。
这个竞赛错误应该在最新的 Xcode 7 Beta 中得到解决。
【讨论】:
我提交了一个雷达问题,被 Apple 标记为重复。所以他们正在努力,或者它已经在下一个 XCode 版本中修复。【参考方案3】:在正在运行的设备上调用终端:
xcrun simctl spawn $device_udid launchctl stop com.apple.securityd;
rm -rf $HOME/Library/Developer/CoreSimulator/Devices/$device_udid/data/Library/Keychains;
xcrun simctl spawn $device_udid launchctl start com.apple.securityd;
【讨论】:
【参考方案4】:Xcode 13.1
您可以从选项Device
-> Erase All Content and Settings
删除模拟器上的钥匙串数据,如下图所示。
请记住,此选项将清除模拟器上的所有当前数据。
希望能帮助到别人!
【讨论】:
以上是关于如何在模拟器中重置钥匙串?的主要内容,如果未能解决你的问题,请参考以下文章