在 XCode 之外测试 iCloud:签名无效
Posted
技术标签:
【中文标题】在 XCode 之外测试 iCloud:签名无效【英文标题】:Testing iCloud outside XCode : Signature invalid 【发布时间】:2012-02-13 21:12:17 【问题描述】:所以,我正在开发一个具有 iCloud 功能的 Mac 应用程序。在 Xcode 中,一切都很好。我正在使用与 Mac 团队配置文件配对的 Mac 开发人员证书(代码签名身份,来自构建设置)。当我编译和运行时,我可以从 iCloud 保存/加载文件。我很高兴。
我不满意的地方是我创建包并将其发送给测试人员。应用程序根本没有启动!我从控制台得到以下输出:
12-02-13 3:50:09.796 PM sandboxd: ([51185]) taskgated-helper(51185) deny mach-lookup com.apple.ocspd
12-02-13 3:50:09.796 PM sandboxd: ([51185]) taskgated-helper(51185) deny mach-lookup com.apple.ocspd
12-02-13 3:50:09.796 PM sandboxd: ([51185]) taskgated-helper(51185) deny mach-lookup com.apple.ocspd
12-02-13 3:50:09.797 PM sandboxd: ([51185]) taskgated-helper(51185) deny mach-lookup com.apple.ocspd
12-02-13 3:50:09.867 PM ReportCrash: Saved crash report for myAppName[51195] version ??? (???) to /Users/plboily/Library/Logs/DiagnosticReports/myAppName_2012-02-13-155009_Blinky.crash
12-02-13 3:50:09.870 PM ReportCrash: Removing excessive log: file://localhost/Users/plboily/Library/Logs/DiagnosticReports/myAppName_2012-02-03-113847_Blinky.crash
12-02-13 3:50:10.000 PM kernel: CODE SIGNING: cs_invalid_page(0x1000): p=51195[myAppName ] honoring CS_KILL, final status 0x10201
12-02-13 3:50:10.000 PM kernel: CODE SIGNING: cs_invalid_page(0x1000): p=51195[myAppName ] clearing CS_VALID
以下是崩溃日志的sn-p:
Exception Type: EXC_CRASH (Code Signature Invalid)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Thread 0 Crashed:
0 dyld 0x8fea9280 dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*) + 526
1 dyld 0x8fea9063 _dyld_start + 51
知道有什么问题吗? 有人知道我为什么会遇到这些问题吗?我的系统配置文件中已经有我的 Mac 团队配置文件
顺便说一句,当我在我们的构建机器上构建时,.app 文件夹中出现了一个 _CodeSignature 文件夹,以及一个 embedded.provisioningprofile 文件。一切似乎都在那里。我想知道是否必须将代码签名身份添加到项目的所有目标中?目前,我只签署了应用程序目标。
谢谢
【问题讨论】:
【参考方案1】:我需要更改我的 entitlement.plist 以使应用配置文件 ID 不是 $(TEAMID).appid 所以去开发中心查看应用 ID 并获取应用 ID 的 dns 部分之前的字母和数字并替换$(TEAMID) 在 entitlement.plist 中。我这样做了,你已经停止了同样的错误,但我只需要使用一个应用程序而不是我拥有的其他 2 个 iCloud 应用程序。我还删除了 icloud 中的所有文档以从 clean storage 开始。
- (NSURL *)iCloudURL
return [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
NSError *error = nil;
[[NSFileManager defaultManager] removeItemAtURL:[self iCloudURL] error:&error];
【讨论】:
【参考方案2】:我终于找到了我的问题!
问题是在我的 codesign 命令之后,我使用 change_name_tool 修改了我的二进制文件。所以,由于二进制文件发生了变化,签名不再有效!!!!
【讨论】:
以上是关于在 XCode 之外测试 iCloud:签名无效的主要内容,如果未能解决你的问题,请参考以下文章
iCloud:应用程序在 Xamarin Studio 中验证,但不在 XCode 中
当 Xcode 将“iCloud”权利添加到我的 iOS 项目的 App ID 时,它会使 Mac 的权利无效