从今年三月开始,我学习 iOS 开发,语言是 Swift 。七八月的时候,我开始构思一款记录、分享句子的 App 。由于是业余的自己用业余的时间做,所遇问题也非常多,有些能解决掉,有些功能却是自己想也想不能该如何实现的,还好自己有一个好的心态,处于新手阶段的自己,也没有想一下子就做得很了不起。十月的时候,终于感觉到这个 App 可以用起来了,于是在十月底交费开通了苹果开发者帐号。并找资料看视频,寻求上传 App 的方式,还好,比较顺利,一个晚上的时间,就将第一个版本上传到了 App Store ,接着就是等待了,一周多一点的样子,审核状态变成了「正在审核」,很快,收到邮件通知,审核未能通过。
我查找了原因,是因为自己的 App 用户帐号管理方面的问题。我使用了友盟第三方帐号管理系统,但却没有自己的帐号管理模块。我直接将友盟的帐号模块完全删除掉,换用 Parse 来做 App 的后台,但很快我发现,访问速度太成问题。正当我感感有点绝望的时候,无意中有人提到了 LeanCloud 这个服务。看了看使用文档,使用上就完全和 Parse 一样,代码修改极其简单,半小时就完全修改 OK 了,我立马打包上传,结果发现,真机上运行就出错了:
The identity used to sign the executable is no longer valid.
Please verify that your device’s clock is properly set, and that your signing certificate is not expired.
(0xE8008018).

当时就觉得奇怪了,我只是添加了一个第三方 SDK ,其它的都没有动过,怎么就这样了呢?看样子是提示签名或授权文件现问题之类的。我试着在网上寻求解决办法,果然也有人遇到这样的问题,我进行这些方法的尝试:
- 重启 Xcode
- 删除 Xcode 里面的 Apple ID ,重启 Xcode ,再重新登录 Apple ID ,然后下载 Provisioning Profile 。
- 关闭 Xcode ,删除
/Users/USERNAME/Library/MobileDevice/Provisioning Profiles
里面所有的文件。 - 清除掉
/Users/USERNAME/Library/Developer/Xcode/DerivedData
目录中对应项目的目录。 - 在 Apple Developer 上删除原有的 Provisioning Profile 文件,新建,再下载,重新安装上。
然而却报同样的错误,接着寻找办法,感觉找到了更多的解决办法:
看里面的留言,有成功的,也有仍然失败的,最容易的,就是重启一下Xcode就搞定了。然后我却没有那到幸运。
按着其方式一一作了尝试,却仍然没有用。心里挺绝望的。于是我开始做自己才想到的另一个 App ,前前后后一个月,白天上班,晚上回家看看书,写写代码,然后做出来了。这月初的时候提交审核,15号审核通过,正多上架。一下子挺受鼓舞,就拿起以前的 App ,想重新弄下。将以前试过的方法又重新试过,仍然无果。我在一个 QQ 开发群中求助,得到到一朋友的帮助,所用方法,也是我尝试过的。接着我想到了苹果的开发者技术团队。于是向他们发了邮件,尽量的将我息遇问题及解决办法给他们说了,他们当天给了回复,建议我将 Xcode 删除掉再重装,昨天晚上按此方法试了,却仍然报着一样的错。
不过我却仍然没有放弃,尽管我心理头想可以跳过这个 App ,重新再做一个功能更强一点的,但问题放在这里总会是个问题,万一哪天我又遇到怎么办呢?我新建了一个项目,把原有项目里的文件全部复制到新项目中,安装 SDK, 然后进行调试,原以为一切OK,然后,错误一样出现了!
无意中我查看 App 的编译信息时,发现有一行貌似 LeanCloud 有请求证书的代码,而所报之错,也是关于证书的,难着这个 SDK 使用也需要先申请证书?我上 LeanCloud 的网站查看文档,找到了这样的资料:
https://leancloud.cn/docs/ios_push_cert.html
原来是要开启信息推送功能:
为 App 开启 Push Notification 功能。如果是已经创建的 App ID 也可以通过设置开启 Push Notification 功能。
需要两个新的证书,然后再更新授权文件。但真机运行时,同样报错,于是我动 SDK 的 BBS 看寻求帮助,发现了这个贴子:
https://forum.leancloud.cn/t/ios-avoscloud-framework-code-signature/3667/12
所遇问题和我的一样,提示升级 Xcode ,我看我 SDK 的版本是 3.1.5.2 的,我将其升级到了 3.1.6.8 ,这里,我惊喜的发现,和原来报的错不一样了,而变成了这样:

尽管还有错误,但总算是有了新的起色,也算是一个不错的消息了,我英文不太好,但我猜还是授权文件方面的问题吧,但我确实是才重新做了授权文件的。
最后发现,还是 SDK 的使用问题,我手动添加了最新版的 SDK 之后,就一切 OK 了,现在真机也能运行上了!
最后,总结一下这次经历的经验教训吧。
- 遇到的问题,多半不止自己一个人遇到,通过网络查找,一般可以解决。
- 向他们求助,但这一步一定要在自己实无可想之法时才进行。
- 开发文档应该仔细阅读。即便不想读,也至少全程浏览一遍,有个印象之后,能方便问题的定位。
- 受难时别迷失了方向,前期的尝试感觉在方向上都出了问题,利于排除法,问题应该能很快的定位到是由于第三方 SDK 所起的错误。
问题得到解决,又可以继续了!
网友评论