來龍去脈
- 測試說企業版打出來的包不能安裝到手機,用
iTools
安裝,包“驗證失敗” - 用
XCode
試,模擬器是沒有問題的,可以正確編譯、安裝、執行。用真機也不行了,報代碼簽名錯誤,詳細信息是所選擇的手機不在信任列表里... ...
這是企業版賬號啊,跟手機有什么關系?這個企業版賬號跟普通的App Store
的賬號好像沒什么區別啊。 - 在運維的幫助下,登錄蘋果開發者后臺賬戶,看到了兩個
Provisioning Profile
,對應于兩個證書,分別是Development
和Distribution
,確實和App Store
的賬號一模一樣。 - 在跟運維確認了這是企業版賬號之后,我決定找找原因看,這個有點顛覆自己對企業版的認識,記得自己是在2013年左右玩過企業版的,看來蘋果又改什么東西了,知識需要更新了。
- 同事推薦了下面的第一篇參考文章,我就照著做了。現在的賬號一律不動,自己就新建一個賬號試試。
- 鑰匙串中生成一個
CertificateSigningRequest
,發給蘋果,生成一個新的證書。 - 下載生成的證書(
.cer
文件)到本地,并雙擊一下安裝到自己mac
的鑰匙串中。這個步驟很重要,不然的話XCode
中會顯示證書不對。當時折騰了好幾次才知道這個小細節。 - AppID已經生成好了,不用動。設備ID雖然有這一欄,始終認為企業版不需要管設備ID,一致沒動。
- 接下來就是生成
Provisioning Profile
,這里唯一要注意的是類型要選擇In-House
。生成后,發現類型是Universal Distribution
。 - 采用這個新證書,用
XCode
的Run
選項來裝。結果是能裝上,但不能運行和調試,一閃就退出了。手機上的程序可以點擊打開,功能正常。瞬間了解了,這是發布版,是Release
模式,當然不能用XCode
調試啦(現象是閃退,但是程序已經正確安裝到手機上)。這個和普通的release
是一個現象。 - 打包,導出
ipa
,再用iTools
安裝,一切正常了。
原因分析
- 經歷過一次,終于明白,企業版也分為開發模式和發布模式
- 開發模式也是
Development
,可以連XCode
調試,不過手機的UUID
也要添加。(這一點以前一直沒有認識到。一直認為,企業版跟手機的UUID
應該無關才對) - 企業版的發布模式應該選
In-House
,最后的類型應該是Universal Distribution
才對。那個Distribution
的證書是沒有用的。 - 運維按照普通賬號的操作方式來套用了,給了我們
Development
模式的Provisioning Profile
,手機的UUID
也沒有加,所以出現了測試同學無法安裝的問題。
對應措施
- 知道了原因,改起來就快了,直接用新的
Universal Distribution
模式的Provisioning Profile
來簽名就可以隨便安裝了。 - 企業版只是作為內部的試用版發布,沒必要調試,所以
Development
模式暫時不準備啟用。要添加手機的UUID
,直接用普通版的就可以了,沒有必要上企業版。 - 自己
mac
上p12
要導出,讓運維導到打包服務器的mac
上
參考文章
蘋果企業賬號發布APP詳解——通過自己網站分發應用
這篇文章不錯,可以照著做,是一個操作手冊
iOS App 簽名的原理
對蘋果的簽名機制研究得比較透徹。值得好好看看