IOS 学习笔记(Provisioning Profile - Pending (Managed by Xcode))PART 6

今天下班前,想把同事的新iphone给绑定作为开发机,结果遇到跟之前一样的问题,新绑定的机器装不上Air打包出来的东西,会提示

“Installation Error: ApplicationVerificationFailed.”

找到的解决方案都是建议renew一下Provisioning Profile,我就打开XCode想看看原生的项目能不能装上,结果就发现一个困扰了我一下午的问题,

“Generation of the team provisioning profile for AppID ‘xxxxxxxx’ is still pending.  Please wait a moment and then click the Refresh button in the Details section of the Accounts tab for this team.”

无论如何点击它的fix issues 按钮,都Fetch不回来正确的provisioning profile,总是在提示AppID为xxxxxxx的这个配置文件还正在受理中,这时我陷入了无论如何也无法将写好的代码发布到真机调试的状态中,抓狂了。我做了以下尝试

  • 尝试重新发布certificates,包括重新发起申请,上传CertificateSigningRequest.certSigningRequest,进而重新发布所有provisioning profile,不灵。
  • 尝试删除所有不用的AppID,因为提示的这个AppID:xxxxxxx,应该是Apple系统识别App的唯一编号,而在developer.apple.com上只能看到bundle identifier 也就是类似 com.youcom.appName这类东西,我无法确切地知道它对应的是哪个AppID,最后删除到只剩下几个不许删除的ID(因为正在App商店里销售,因此不能被移除)还是不灵。
  • 从Organizer里面移除我的iphone,重新连接,删除iphone中已经安装的所有provisioning profile,以及卸载之前安装的所有测试应用,重新将设备Add To Member Center,依然不灵。
  • 我忽然注意到,在provisioning profile列表中存在大量的不是由我手动创建的provisioning,他们都有一个统一的名头叫iOS Team Provisioning Profile: <your bundle id>,然后他们的状态,都是pending,而且无论我删除他们多少次,只要我启动fix issues按钮去fetch provisioning profile,被删除的部分就又被重新创建出来了,看到他们(Managed by Xcode)的备注,我忽然明白了什么,官方论坛上有人集中在讨论这样的问题,地址在这里。我进一步去查看了Apple的详细文档,终于大体了解了它高大上的证书体系是肿么被XCode的管理起来的。
    理论上,XCode只需要你提供正式授权的Apple Developer ID并登录成功即可,然后在创建项目时,指定好应用对应的bundle id,后面所有创建和管理AppID,provisioning的事情,它都帮你代办了。包办的坏处也是显而易见的,有人给Apple写邮件询问这种一直在Pending的状态如何处理,Apple的回复是:

    他们正在更新某些应用程序,在此期间发起的一切证书请求都将被挂起,待他们修复完毕后,会集中处理这部分的请求。
    于是一群人开始玩Waiting Game,还互相比较谁等的时间长,而我作为一个处女座的O型血,这么坐以待毙严格违背我的折腾准则啊!!利用关键词”set mobileprovision provisioning profile with xcode“,找到了在机器上调试的各个程序的配置文件都存放在文件夹

/Users/username/Library/MobileDevice/Provisioning Profiles

里面,原文地址,知道这个之后,我就抱着,缺什么补什么的态度,去developer.apple.com手动添加了一个provisioning profile,然后乖乖地down下来一个mobileprovision文件,放到这个文件夹里之后,这回运行成功了~~~~

 

当我上完英语课回来看到provisioning profile里果然已经不pending了,嗯…………fuck