Jenkins使用IOS打包问题(三)

在Jenkins使用IOS打包问题(二)中我使用手动更新签名的方式来更新签名,其中留下来还是要手动点击的这么不“优雅”的事情,我们写了一段Python的脚本实现了自动打包并上传的功能,但是在使用过程中发现如果我们增加一台device id,我们使用该脚本结合Jenkins打包出来的IPA包实际上无法增加任何一个device id,只能由我们的开发人员手动打包,这个问题比较麻烦,经过一轮研究之后解决了这个问题。

Jenkins使用IOS打包问题(三)_第1张图片

根据http://blog.csdn.net/phunxm/article/details/42685597这篇文章的解释,我们得知Provisioning profile实际上包含了Device ID,因此更新Provisioning profile就可以更新Device ID。因此我们进入本机~/Library/MobileDevice/Provisioning Profiles,查看一下果然我们的所有文件日期都没有更新,但是我们是根据xcode编译提示在export阶段加入了-allowProvisioningUpdates这个参数的,应该会自动更新啊??

然后查阅资料得知 -allowProvisioningUpdates不是实际意义上的自动更新,如果你的目录下存在Provision profile陈旭就不会更新。

我们来做个实验验证下,如果删除了Provision Profile这个文件,那么提示是没有签名,xcode的错误提示是需要加入-allowProvisioningUpdates,实际上加上了也是一样的提示,陷入了死循环。

这下就迷茫了……

这个情况下要发动技能,容我三思……。回顾一下刚才的文档, -allowProvisioningUpdates应该是在archive阶段加入,加入到脚本中提示果然不一样,提示是登录[email protected]无法访问,这就不一样了哦,好像看到了曙光就在前头。

这个以前见过,就是更新证书登录的问题,那么这么一来范围就缩小了,自动更新其实不是用-allowProvisioningUpdates这个参数控制,那么用那个参数控制呢?

provisioning_profile 就是我们需要的这个参数,我们在脚本里面发现provisioning_profile 默认设置成了None,然后我们在Jenkins没有使用这个参数,所以这个值就不会变化。

因此,我们在provisioning_profile='Automatic'作为默认值,这样的编译脚本就可以在打包编译的时候自动下载Provision Profile,那么我们新的Device ID就可以添加到新的账户里了。

总结:

Xcode9的自动打包脚本实际上用的是provisioning_profile='Automatic'而不是allowProvisioningUpdates来控制自动更新Provisoning Profile证书。Xcode给出来的提示实际上是有点误导,让人以为allowProvisioningUpdates可以自动更新证书,实际上并不是这样。




你可能感兴趣的:(Jenkins,集成测试,Devops,IOS)