xcode – 如何告诉Spotlight索引我的.dSYM包?
今天是我第一次尝试 – 并且失败 – 象征着新购买的MacBook上的崩溃日志(我们称这台机器为MB1). MB1预装了Mac OS X 10.9.我将跟踪失败符号的问题跟踪到Spotlight没有索引任何我的.dSYM捆绑包(没有Spotlight索引,Apple的symbolicatecrash脚本无法找到与崩溃日志匹配的.dSYM捆绑包).我得出结论是因为
mdfind "com_apple_xcode_dsym_uuids == *" 不会打印任何东西,虽然我的?/ Library / Developer / Xcode / Archives文件夹中有几个.xcarchive包,但它们肯定包含.dSYM子包,其UUID我可以使用dwarfdump –uuid打印.我的项目的构建文件夹(DerivedData)中也有几个.dSYM包,但它们都没有被索引. 因此,简单易行的问题是:如何告诉Spotlight索引我的.dSYM包? 如果这个简单的问题没有简单的答案,这就是我在MB1上已经尝试过的: >检查?/ Library / Developer / Xcode / Archives中的文件和文件夹的权限(它们都没问题,文件夹为755,文件为644) 详细说明:在我切换到MB1之前,我有一台较旧的MacBook(让我们称之为机器MB2),这是我的开发机器.在MB2上,我从未遇到过象征性问题. MB2安装了Mac OS X 10.8,而我还在积极开发它,但我最近将MB2升级到Mac OS X 10.9. 今天,在MB2上运行mdfind仍然给了我很多.dSYM包,来自Archives文件夹和项目的DerivedData构建文件夹.这些都是来自Mac OS X 10.8天的旧文件,但显然Spotlight在操作系统升级时保持其索引.我认为在创建新文件时看看Spotlight的行为会很有趣,所以我做了以下事情: >在MB2上启动Xcode,创建新存档,然后运行mdfind.这将在DerivedData构建文件夹中找到中间.dSYM包. 在这一点上,我得出结论,因为?/ Library是一个隐藏文件夹,这就是阻止Spotlight索引其中内容的原因.这可以通过在?/ Library中创建一个常规文件并搜索它(没有命中),然后将文件移到?/ Library之外并再次搜索(1次点击)来轻松确认.不幸的是,由于两个原因,这个理论在它的鼻子上落空了: >?/ Library已隐藏在10.9之前的Mac OS X版本中,但这从未阻止Spotlight索引.dSYM文件 回到MB1:我尝试从上面重复步骤3,即在用户主目录的根目录下复制.xcarchive包,然后运行mdfind.令人惊讶的是,在MB1上,结果与MB2不同:mdfind仍然没有找到任何.dSYM捆绑包! 此时我放弃并希望得到你的帮助.我的结论是Mac OS X 10.9对我的问题负有某种责任,但对于我的生活,我无法弄清楚为什么会这样.如果它有帮助,这里有一些额外的配置细节: > MB1:安装了Xcode 5.0.2和Xcode 4.6,默认为5.0.2(使用xcode-select设置). Homebrew也安装了.该系统是Mac OS X 10.9的全新安装. 解决方法
窥视Xcode应用程序包会显示以下Spotlight导入程序:
caradhras:~ --> find /Applications/Xcode-5.0.2.app -name *.mdimporter /Applications/Xcode-5.0.2.app/Contents/Applications/Application Loader.app/Contents/Library/Spotlight/MZSpotlight.mdimporter /Applications/Xcode-5.0.2.app/Contents/Library/Spotlight/uuid.mdimporter 运行此命令 mdimport -g /Applications/Xcode-5.0.2.app/Contents/Library/Spotlight/uuid.mdimporter ~ 最后索引位于用户主目录根目录中的.xcarchive包.尽管如此,即使我明确地将mdimport指向此文件夹,它也不会对?/ Library / Developer / Xcode / Archives中的包进行索引. 问题仍然存在:为什么uuid.mdimporter不能自动运行? 编辑 解决方案是重新启动计算机(注销/登录可能已经足够),?/ Library之外的存档包现在已正确编入索引.我需要重启的原因可能是: >我使用特权管理员用户(A)来安装软件,但我正在使用不同的非特权用户(U)进行正常工作,例如使用Xcode进行开发. 无论如何,在故障排除期间,我发现您可以通过运行mdimport -L来检查活动Spotlight导入程序列表(请注意,不同的用户可以同时激活不同的Spotlight导入程序).不出所料,在重新启动uuid.mdimporter之后,现在列出了,而在重启之前它没有. 这是一个有用的Apple文档,我在谷歌搜索后发现:Troubleshooting Spotlight Importers. 最终解决方案 配置Xcode,使归档文件夹位于?/ Library之外.在Xcode 6中,您可以在“位置”选项卡下的“首选项”对话框中执行此操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |