由於用普通開發者證書,發布的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://stackoverflow.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