众所周知,iOS 证书分为两类:Development 和 Production(Distribution)。我们用Development作为日常Debug开发调试证书使用;Distribution作为上传AppStore,发布使用。
具体证书相关详解,请见下篇文章,讲解的很详细,这里不再复述。
https://blog.csdn.net/phunxm/article/details/42685597/
下面要说的是,当我们已经安装了正确的Certificates,并且也未过期的情况下,在XCode里,Automatically Signing 去掉勾,Development没有问题,但是Distribution会出现:
Provisioning profile "xxxx" doesn't include signing certificate "xxx"
如下图所示:
即Provision Profile 与 Signing Certifcate 不匹配。
在这种情况下,Certificates都是存在且安装正确的,但为什么还会出现这样的问题?
因为XCode默认匹配Signing Certifcate的时候,默认找到了Development的Certifcate,因此与Distribution不匹配。即本应组合如下:
Development的Provision Profile + Development的Signing Certificate;
Distribution的Provision Profile + Distribution的Signing Certificate;
这样才是正确的。
网上有人说删除本地的Provision Profile文件,重新下载,我试了这个方法,不起作用。
正确的方法是,在Build Setting里,设置Code Signing Identity:
将Release版本的 Code Signing Identity设置成对应的证书即可。设置对了之后,XCode General里可以看到如下图:
这样就正确了,Debug用开发证书,Release用发布证书。
两个证书各司其职,OK了!