升级了XCode 8.1之后,当我运行多个包名和账号切换的工程的时候,在XCode8上报错了。错误提示如下:
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.(0xE8008016)
这对于从来没有遇见过这种错误的人来说无疑是一件令人头痛的事情,但是经过我多番思考与尝试,找到了这个问题的一些解决方法,列举出来分享给大家。
第一种:检查TeamID
- 找到变换前后两个账号的teamID,这个可以到ituneconnect里面,或者直接到project.pbxproj查找,出问题的此刻,已经存在两个不同的teamID。
- 查找到切换的ID,把project.pbxproj工程文件中的签名ID全部手动替换成目标ID。DEVELOPMENT_TEAM = XXXX ; XXXX填写新的teamID
- 根据Target数量的不同,可能有好几处,全部替换成统一一个样即可。
- 此问题在Xcode8beta版中已经存在,若有多个包名和账号切换的工程,可作为参考。
第二种:检查Capabilities
检查AppID所设置的功能,一般默认开启了Game Center,那么就要在Capabilities把Game Center 打开。如果开启了推送,那么就要在Capabilities把Push Notification打开。诸如此类都要打开。
第三种:用itunes打包
- 先在项目的Target里的General进行设置,把Signing下的Automatically manage singing取消
- 在Signing(Debug)和(Release)里的Provisioning Profile选中已经配置好的证书(Wildcard那种)
- 直接Build项目(⌘b)
- Build完后在项目文件夹找到Products,看看xxx.app是否变成黑色。
- 打开iTunes,把xxx.app拖入iTunes,会生成一个app,右键那个app的icon,用Finder打开,会看到xxx.ipa的文件,把此xxx.ipa拖入即可。
如果在不想改变原有工程的情况下解决这个问题,建议使用第一种方法.
注:喜欢的话欢迎关注专题IOS开发者心得,这里会持续更新很多IOS开发过程中遇到的一些很有用的东西,欢迎大家前来投稿
欢迎关注本人简书白纸上涂鸦.