iOS 向客户发送xcarchive文件(整理中)

时间:2023-03-09 03:55:03
iOS 向客户发送xcarchive文件(整理中)

由于安全的原因,客户不会把app的 distribution provisioning profile给开发者的,但是可以给一个development provisioning profile。这种情况下,我们把code signing中的provisioning profile的release版本设置为development provisioning profile,之后就可以进行archive了,再把archive发送给客户,他可以通过Organizer进行后续的发布操作。

这里面主要涉及了archive 和 distribution的知识。

archive不对provisioning profile做过多检测,只需要满足最低要求就可以:能够在真机运行的标准。所以,即使像下图这样的设定,也可以顺利archive:

iOS 向客户发送xcarchive文件(整理中)

而且,仅仅使用开发者provisioning profile再xcode7以上,也是可以导出ipa的。证明一下,下面是使用*类型的provisioning profile,进行export ipa的最后一步的截图:

iOS 向客户发送xcarchive文件(整理中)

我们再看看Organization中的几种发布方法,看下图:

iOS 向客户发送xcarchive文件(整理中)

我们刚才使用的是第四个选项,只需要development provisioning profile就可以了,但是前3个各自需要不同类型的 distribution provisioning profile。

其中第四个选项比较容易疑惑,什么叫development deployment呢,其实就是把cer和provisioning profile都用对应的dev版本,生成一个ipa,能够debug的设备都可以安装,这样看来,作用和 adhoc 有相似之处。

这个选项是xcode7.0之后出现的,经过我的测试,当设备被关联进development provisioning profile后,生成的ipa可以直接安装在这个设备上,而且不像用Enterprise Deployment 发布的程序还需要在设备上点击信任证书的选项。我这里有一个疑问,它和Ad hoc deployment有什么区别呢?

通过下面的截图能看出,基本上分4种证书,App Development, In house, Ad hoc, App store.分别对应Organization中的4个选项,

iOS 向客户发送xcarchive文件(整理中)iOS 向客户发送xcarchive文件(整理中)

不要把archive和 distribution搞混了,真正的distribution是在Organizer中进行的。archive时的bundle id是非常关键的,bundle id确定后,必须选择对应的certificate的team才能进行发布,而且Organizer会在distribution过程中根据这个id去找匹配provisioning profile,如果有相应的provisioning profile 就可以发布,并不对archive时的证书做过多要求,Organizer回自动用合适的证书替换archive时的错误证书。

我把一个用develop provisioning profile的archive 分别用Development deployment 和 ad hoc deployment (已经申请了ad hoc证书)进行打包ipa,生成ipa后,对比这2个包中的embedded.mobileprovision文件,发现是不同的,由此,可以看出Organizer确实自行更改了 provisioning profile。