我安装了 XCode 4.3。在偏好设置的“通用”选项卡中,我看到了“iOS 设备发现”选项卡。也许以前也有,但我现在才注意到。
所以我勾选了它,在此之后我可以做任何事情,但当我尝试访问组织者的设备选项卡时,XCode 经常崩溃。
有什么解决方案吗?
更新:我已从 Mac App Store 中删除并重新安装它,但没有帮助。
更新:我向 Apple 提交了错误报告,他们将其标记为重复,并关闭了两个报告。因此,我希望我们能从 Apple 那里得到解决方案。
我不能完全归功于这一点。我在这里找到了它,并且在结尾处添加了我在我的情况下需要的一点。
使用以下内容创建readcert.m:
#import <Security/Security.h>
#import <Foundation/Foundation.h>
void checkCerts () {
OSStatus status;
const void *keys[] = {
kSecClass,
kSecReturnRef,
kSecMatchLimit
};
const void *values[] = {
kSecClassCertificate,
kCFBooleanTrue,
kSecMatchLimitAll
};
CFDictionaryRef query = CFDictionaryCreate(NULL, keys, values, 3, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFArrayRef results;
if ((status = SecItemCopyMatching((CFDictionaryRef) query, (CFTypeRef *)&results)) != noErr) {
NSLog(@"Failed to copy certificates: %d", status);
return;
}
CFIndex count = CFArrayGetCount(results);
CFIndex i;
for (i = 0; i < count; i++) {
SecCertificateRef cert = (SecCertificateRef) CFArrayGetValueAtIndex(results, i);
CFErrorRef error;
CFDictionaryRef vals = SecCertificateCopyValues(cert, NULL, &error);
if (vals == NULL) {
CFStringRef subjectSummary = SecCertificateCopySubjectSummary(cert);
NSLog(@"Found a triggering certificate: %@", subjectSummary);
}
}
CFRelease(results);
}
int main (int argc, char *argv[]) {
NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];
checkCerts();
[p release];
return 0;
}
然后,使用以下命令进行编译:
clang -o readcert readcert.m -framework Security -framework Foundation
然后运行它:
./readcert
它应该输出不良证书的名称。在我的情况下,它是来自Linksys路由器的证书。我从钥匙串中删除了证书,但Xcode仍在崩溃,并且readcert仍在说它存在,因此我最终执行了这个命令。
sudo security delete-certificate -c Linksys_WRVS4400Nv2
我不确定证书是从哪里来的,我没有在登录或系统钥匙串中看到它,但是从命令行删除后,Xcode中的一切又恢复正常了。
我也遇到了同样的问题。我在系统上创建了一个新用户,使用该用户打开组织者窗口中的设备没有任何问题...很奇怪...
编辑:我在我的密钥链中删除了一个证书,这解决了我的问题。它是一个不被信任的证书。也许这能帮到你。
请注意,“有害”的证书可能不是开发证书或与开发/预配相关。请确保检查“证书”,而不仅仅是“我的证书”在密钥链中。罪魁祸首可能是任何证书,比如公司签名的SSL证书等等。
我解决了问题。我不知道这是否是最好的解决方案,但是在五天之后,我很高兴Xcode又可以工作了。
我通过两件事情解决了问题。在Lion下重置我的Keychain并撤销现有的预配证书。
所以首先,在Lion下重置您的Keychain(http://support.apple.com/kb/TS1544)。这将使组织者启动而不会崩溃。
不幸的是,现在您无法部署软件,因为您杀死了Keychain中的所有证书。因此,现在您需要撤销所有开发人员证书(developer.apple.com/membercenter)并从组织者中删除预配证书。然后告诉组织者刷新。
它将恢复所有错误的配置文件,但还将创建至少一个有效的配置文件。
Xcode的新版本试图提供帮助,并希望为您处理所有证书需求。因此,打开一个Xcode项目,并将代码签名设置为新的预配证书。编译,一切都会重新正常工作。
就像我说的,这可能不是最好的解决方案,但是从Keychain中删除旧证书和额外的偏好文件对我没有任何帮助。如果一切都失败了,请尝试这个方法,它可能会有所帮助。
有同样的问题,不开心。我很难相信苹果会以这样的状态发布它。今天XCode已经至少崩溃了25次。
我终于找到了问题所在。对我来说,问题出在我的开发设备上而不是XCode上。我将设备恢复到出厂设置。现在,当设备插入时,XCode不会崩溃。
在重置设备之前,我尝试过仅删除设备上的所有证书。然而,XCode仍然崩溃。这是我在重置设备之前采取的唯一步骤。
2012年3月22日更新:苹果今天发布了新版本的XCode。从发布说明中可以看到:
额外的错误修复和稳定性改进
希望这可以为大多数人解决问题。
2012年4月11日更新:
我再次遇到了XCode的问题。一位同事建议我清除我的项目的XCode缓存,我的缓存在这里:
~/Library/Developer/Xcode/DerivedData/your_app_name-abunchofletters
在该文件夹中运行:
rm -r *
连接我的开发设备时,XCode不再崩溃。
我尝试了像其他人建议的那样删除证书,甚至重置了我的钥匙串。然而这没有任何影响,打开组织者总是会导致崩溃/挂起。
我的解决方法是删除一些Xcode设置文件。具体来说,我删除了以下文件:
~/Library/Developer/Xcode/UserData/IDEOrganizerWindowController.xcuserstate
~/Library/Developer/Xcode/UserData/IDEPreferencesController.xcuserstate
~/Library/Developer/Xcode/UserData/KeyBindings
这个Xcode问题的解决方案似乎各不相同,但我没有看到其他人发布过这个解决方案,所以我希望它能帮助其他人。请记住,在尝试这个解决方案之前,我已经进行了钥匙串重置,因此我并不排除使用此解决方案需要进行钥匙串重置。
我删除了所有不可信的旧证书。即使如此,我的Xcode 4.5在打开组织者时仍然崩溃。
通过硬重置Xcode解决了我的问题。
启动终端。
键入“defaults delete com.apple.Xcode”并按“Enter”。这将删除设置。
有时,如果您安装了多个版本的Xcode,则默认的捆绑标识符可能会有所不同。您可以通过按Tab键让终端显示可能性来检查捆绑标识符列表。
键入“rm -rf ~/Library/Application\ Support/Xcode”并按“Enter”。这也会删除配置文件夹。
现在打开Xcode,它将向您显示协议页面。以这种方式,我的Xcode按预期工作。
我希望这对某人有所帮助。
在Xcode 5.0上,每当我转到设备选项卡时,都会出现相同的错误。通过查看 应用程序->工具->控制台
, 找到了解决方案。它试图写入只读设备日志数据库,这意味着它无法为该数据库实例化对象模型(ORM)和上下文。崩溃描述是“不能执行没有托管对象上下文的操作”。
删除~/Library/Developer/Xcode/iOS Device Logs/*
和 ~/Library/Developer/Xcode/iOS Device Logs*.db
意味着它将在启动时重新创建(现在为空的).db文件,并获得正确的权限,现在一切正常。
我尝试了以上所有方法都不行,但我找到的解决方案非常简单:
前往~/Library/Developer/
,在这个文件夹里有一个名为Xcode
的文件夹,我所做的就是将现有的文件夹重命名并重新打开Xcode
,然后Xcode
创建了一个新的名为Xcode
的文件夹,一切都重新开始工作了。
希望这可以帮到你。
security find-certificate -Z -a -c mycert.example.com
来查找它们。-a标志打印所有匹配的证书。-Z标志打印证书的SHA-1哈希值,如果按名称删除时多个证书匹配,则可以在security delete-certificate -Z <hash>
中使用该哈希值。 - RandomEtc