由于用普通开发者证书,发布的app或ipa没法在普通机器上安装运行,原因是apple限制了普通开发者发布appstore以外的环境中,只有Enterprise企业版证书才能发布inhouse。 今天在发布一款公司内部使用的app时,由于mac中同时安装了 普通开发者证书 和 企业证书,xcode可能默认使用了普通开发者账号,因此发布的ipa始终无法在普通机型中安装成功。几经周折,终于发现了这个问题,于是想办法找到了设置成使用企业版证书,但是这时候连编译都无法通过,错误提示如下:
No matching provisioning profiles found
his product type must be built using a provisioning profile, however no provisioning profile matching both the identity “iPhone Distribution: PIXXX CORPORATION” and the bundle identifier “xx.xxx.enterprise.xxx.appname” was found. Xcode can resolve this issue by downloading a new provisioning profile from the Member Center.
意思是说:我使用的企业证书 与 当前发布的程序bundle identifier 不匹配。
原因就很明显了,由于安装证书时安装了一个provisioning profile 文件,这个Provision Profile中记录了一些信息:开发者证书、开发者Apple ID、一系列设备ID(开发者可以使用哪几部设备进行调试),以及造成以上问题的 Application Identifier 。 这就是为什么会提示这个错误了。
插一句,我如何根据我的provisioning file 得知对应的 app identifier呢?
只需双击该文件,重新安装,待自动打开keychains之后,即可查看到该provision profile的 app id 了。
所以,当你只有企业证书,但却没有创建Provision Profile权限,可以委屈求全,将项目属性中的bundle identity 改成该profile的app id就可以了。才能在普通iphone运行, 但是企业证书有个问题,必须把名字改成该证书对应的provision Profile绑定的app id。
参考:
1. 如何解决修改项目名 或 bundle identity 而产生的test子集的 link error ? http://*.com/questions/16513934/how-do-i-add-modify-the-bundle-loader-setting-in-xcode-4-6-2
2. 企业证书的申请流程, 使用,发布方法: http://blog.csdn.net/kmyhy/article/details/6418280
3. apple developer center 设置生成开发者证书,发布证书,appid, provision profile 的生成过程: http://blog.csdn.net/holydancer/article/details/9219333