Jenkins使用IOS打包問題(三)

Jenkins使用IOS打包問題(二)中我使用手動更新簽名的方式來更新簽名,其中留下來還是要手動點擊的這麼不“優雅”的事情,我們寫了一段Python的腳本實現了自動打包並上傳的功能,但是在使用過程中發現如果我們增加一臺device id,我們使用該腳本結合Jenkins打包出來的IPA包實際上無法增加任何一個device id,只能由我們的開發人員手動打包,這個問題比較麻煩,經過一輪研究之後解決了這個問題。


根據http://blog.csdn.net/phunxm/article/details/42685597這篇文章的解釋,我們得知Provisioning profile實際上包含了Device ID,因此更新Provisioning profile就可以更新Device ID。因此我們進入本機~/Library/MobileDevice/Provisioning Profiles,查看一下果然我們的所有文件日期都沒有更新,但是我們是根據xcode編譯提示在export階段加入了-allowProvisioningUpdates這個參數的,應該會自動更新啊??

然後查閱資料得知 -allowProvisioningUpdates不是實際意義上的自動更新,如果你的目錄下存在Provision profile陳旭就不會更新。

我們來做個實驗驗證下,如果刪除了Provision Profile這個文件,那麼提示是沒有簽名,xcode的錯誤提示是需要加入-allowProvisioningUpdates,實際上加上了也是一樣的提示,陷入了死循環。

這下就迷茫了……

這個情況下要發動技能,容我三思……。回顧一下剛纔的文檔, -allowProvisioningUpdates應該是在archive階段加入,加入到腳本中提示果然不一樣,提示是登錄[email protected]無法訪問,這就不一樣了哦,好像看到了曙光就在前頭。

這個以前見過,就是更新證書登錄的問題,那麼這麼一來範圍就縮小了,自動更新其實不是用-allowProvisioningUpdates這個參數控制,那麼用那個參數控制呢?

provisioning_profile 就是我們需要的這個參數,我們在腳本里面發現provisioning_profile 默認設置成了None,然後我們在Jenkins沒有使用這個參數,所以這個值就不會變化。

因此,我們在provisioning_profile='Automatic'作爲默認值,這樣的編譯腳本就可以在打包編譯的時候自動下載Provision Profile,那麼我們新的Device ID就可以添加到新的賬戶裏了。

總結:

Xcode9的自動打包腳本實際上用的是provisioning_profile='Automatic'而不是allowProvisioningUpdates來控制自動更新Provisoning Profile證書。Xcode給出來的提示實際上是有點誤導,讓人以爲allowProvisioningUpdates可以自動更新證書,實際上並不是這樣。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章