XCode 4.3 组织者崩溃

14

我安装了 XCode 4.3。在偏好设置的“通用”选项卡中,我看到了“iOS 设备发现”选项卡。也许以前也有,但我现在才注意到。

所以我勾选了它,在此之后我可以做任何事情,但当我尝试访问组织者的设备选项卡时,XCode 经常崩溃。

有什么解决方案吗?


更新:我已从 Mac App Store 中删除并重新安装它,但没有帮助。


更新:我向 Apple 提交了错误报告,他们将其标记为重复,并关闭了两个报告。因此,我希望我们能从 Apple 那里得到解决方案。

13个回答

16

我不能完全归功于这一点。我在这里找到了它,并且在结尾处添加了我在我的情况下需要的一点。

使用以下内容创建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中的一切又恢复正常了。


4
太棒了,谢谢。这对我有用,设备选项卡将再次加载。它找到了几个证书,在钥匙串应用程序中看不见,我不得不使用 security find-certificate -Z -a -c mycert.example.com 来查找它们。-a标志打印所有匹配的证书。-Z标志打印证书的SHA-1哈希值,如果按名称删除时多个证书匹配,则可以在security delete-certificate -Z <hash>中使用该哈希值。 - RandomEtc
不仅对我有效,而且在XCode 4中也有效。同样遇到了完全相同的linsys问题。谢谢! - nycynik
显然仍然存在一个错误,因为我发现自己回到这里,按照自己的答案查找和消除错误证书。仍然有效! - Fls'Zen
1
太好了,这个可行。我在编译时遇到了一些麻烦,因为我没有安装Xcode命令行工具,所以请确保你已经安装了它们,可以在Xcode>偏好设置>下载选项卡中完成(至少在Xcode 4.4.1中是这样)。 - DonnaLea
组织者在刷新时崩溃,我运行了readcert但没有输出,组织者仍然崩溃:UNCAUGHT EXCEPTION(NSInvalidArgumentException):*** setObjectForKey:对象不能为nil(键:teamId)。我工作的地方的每个人都更新到了最新的xCode,因此没有人可以重新创建团队配置文件,因为每个人的组织者在刷新时都会崩溃。 - Richard Grossman
@cyberBeach 听起来你有一个不同的问题,如果readcert没有返回任何错误证书。 - Fls'Zen

11

我也遇到了同样的问题。我在系统上创建了一个新用户,使用该用户打开组织者窗口中的设备没有任何问题...很奇怪...

编辑:我在我的密钥链中删除了一个证书,这解决了我的问题。它是一个不被信任的证书。也许这能帮到你。

请注意,“有害”的证书可能不是开发证书或与开发/预配相关。请确保检查“证书”,而不仅仅是“我的证书”在密钥链中。罪魁祸首可能是任何证书,比如公司签名的SSL证书等等。


我已向苹果发送了一个关于这个问题的错误报告。我将尝试有关证书的事情,如果成功了,我也会报告这一点,希望苹果能够解决这个问题。 - Infinite Possibilities
信不信由你,这对我也起作用了。我只是删除了所有无效的(不受信任的)证书,最后在最后一个证书上,它停止崩溃了! - Jann
我也遇到了这个问题。然而,我已经删除了所有不受信任的证书和任何看起来可能不正确的东西,但是当我转到设备选项卡时(尝试进行自定义构建时),Xcode仍然会崩溃。还有其他需要注意的地方吗? - DonnaLea
1
更新:删除任何未显示“此证书有效”的内容。我有一个特别设置为受信任的证书,但在Xcode停止崩溃之前也需要删除它。确保选择每个证书,不是所有证书都会在有问题的证书旁边显示红叉。 - DonnaLea
我有一个过期的自签名证书。一旦我删除了它,Xcode就停止崩溃了。 - TrevorL
显示剩余3条评论

2

我解决了问题。我不知道这是否是最好的解决方案,但是在五天之后,我很高兴Xcode又可以工作了。

我通过两件事情解决了问题。在Lion下重置我的Keychain并撤销现有的预配证书。

所以首先,在Lion下重置您的Keychain(http://support.apple.com/kb/TS1544)。这将使组织者启动而不会崩溃。

不幸的是,现在您无法部署软件,因为您杀死了Keychain中的所有证书。因此,现在您需要撤销所有开发人员证书(developer.apple.com/membercenter)并从组织者中删除预配证书。然后告诉组织者刷新。

它将恢复所有错误的配置文件,但还将创建至少一个有效的配置文件。

Xcode的新版本试图提供帮助,并希望为您处理所有证书需求。因此,打开一个Xcode项目,并将代码签名设置为新的预配证书。编译,一切都会重新正常工作。

就像我说的,这可能不是最好的解决方案,但是从Keychain中删除旧证书和额外的偏好文件对我没有任何帮助。如果一切都失败了,请尝试这个方法,它可能会有所帮助。


2

有同样的问题,不开心。我很难相信苹果会以这样的状态发布它。今天XCode已经至少崩溃了25次。


1

我终于找到了问题所在。对我来说,问题出在我的开发设备上而不是XCode上。我将设备恢复到出厂设置。现在,当设备插入时,XCode不会崩溃。

在重置设备之前,我尝试过仅删除设备上的所有证书。然而,XCode仍然崩溃。这是我在重置设备之前采取的唯一步骤。

2012年3月22日更新:苹果今天发布了新版本的XCode。从发布说明中可以看到:

额外的错误修复和稳定性改进

希望这可以为大多数人解决问题。

2012年4月11日更新:

我再次遇到了XCode的问题。一位同事建议我清除我的项目的XCode缓存,我的缓存在这里:

~/Library/Developer/Xcode/DerivedData/your_app_name-abunchofletters

在该文件夹中运行:

rm -r *

连接我的开发设备时,XCode不再崩溃。


0

我尝试了像其他人建议的那样删除证书,甚至重置了我的钥匙串。然而这没有任何影响,打开组织者总是会导致崩溃/挂起。

我的解决方法是删除一些Xcode设置文件。具体来说,我删除了以下文件:

~/Library/Developer/Xcode/UserData/IDEOrganizerWindowController.xcuserstate
~/Library/Developer/Xcode/UserData/IDEPreferencesController.xcuserstate
~/Library/Developer/Xcode/UserData/KeyBindings

这个Xcode问题的解决方案似乎各不相同,但我没有看到其他人发布过这个解决方案,所以我希望它能帮助其他人。请记住,在尝试这个解决方案之前,我已经进行了钥匙串重置,因此我并不排除使用此解决方案需要进行钥匙串重置。


尝试了这个,仍然存在问题。 - theodorton
我相信这是正确的解决方案,当组织者在尝试显示所有内容时崩溃,无论您尝试访问哪个选项卡。虽然问题是关于设备选项卡的,但如果组织者在显示时经常崩溃,它最终会破坏窗口首选项文件,并且这就是在这种情况下的解决方案。 - Danny Parker

0
如果以上解决方案无效,那么尝试使用时间机器安装您的Xcode的先前版本。 这真的有效,因为苹果更新会出现问题。

这应该是对上述解决方案的评论。 - Shreyos Adikari

0

我删除了所有不可信的旧证书。即使如此,我的Xcode 4.5在打开组织者时仍然崩溃。

通过硬重置Xcode解决了我的问题。

  1. 启动终端。

  2. 键入“defaults delete com.apple.Xcode”并按“Enter”。这将删除设置。

    有时,如果您安装了多个版本的Xcode,则默认的捆绑标识符可能会有所不同。您可以通过按Tab键让终端显示可能性来检查捆绑标识符列表。

  3. 键入“rm -rf ~/Library/Application\ Support/Xcode”并按“Enter”。这也会删除配置文件夹。

现在打开Xcode,它将向您显示协议页面。以这种方式,我的Xcode按预期工作。

我希望这对某人有所帮助。


0

在Xcode 5.0上,每当我转到设备选项卡时,都会出现相同的错误。通过查看 应用程序->工具->控制台, 找到了解决方案。它试图写入只读设备日志数据库,这意味着它无法为该数据库实例化对象模型(ORM)和上下文。崩溃描述是“不能执行没有托管对象上下文的操作”。

删除~/Library/Developer/Xcode/iOS Device Logs/*~/Library/Developer/Xcode/iOS Device Logs*.db 意味着它将在启动时重新创建(现在为空的).db文件,并获得正确的权限,现在一切正常。


0

我尝试了以上所有方法都不行,但我找到的解决方案非常简单:

前往~/Library/Developer/,在这个文件夹里有一个名为Xcode的文件夹,我所做的就是将现有的文件夹重命名并重新打开Xcode,然后Xcode创建了一个新的名为Xcode的文件夹,一切都重新开始工作了。

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接