昨天終於成功地向APP STORE提交了應用,個人感覺用AIR做IOS開發就是個坑啊。出了問題之後,問蘋果的技術支持,人家說“對於非XCODE環境下開發及發佈所造成的問題我們在資料庫中無法找到相應的解決方案”。那問adobe的技術支持吧,“你按照開發者中心的教程執行了嗎?”“是的”“你能成功生成IP
昨天終於成功地向APP STORE提交了應用,個人感覺用AIR做IOS開發就是個坑啊。出了問題之後,問蘋果的技術支持,人家說“對於非XCODE環境下開發及發佈所造成的問題我們在資料庫中無法找到相應的解決方案”。那問adobe的技術支持吧,“你按照開發者中心的教程執行了嗎?”“是的”“你能成功生成IPA文件嗎?”“是的”“OK,那麼你的問題應該去找蘋果的技術支持”。。。。我++,簡直有種在天朝上訪被踢皮球的感覺。
所以,我將我遇到的問題在這裡一一記錄下來,以便備忘及幫助到同樣適用AIR開發IOS的同學。
1.我們清楚,在IOS開發中,有這麼幾種文件:
1-1.證書簽名請求CSR文件,在MAC下生成
1-2.IOS開發者/分發證書*.cer文件,通過上傳CSR到IOS開發者中心後下載生成
1-3.P12格式的證書文件,通過從IOS開發者中心下載cer文件,然後在MAC下轉換格式導出,這個文件決定了你在FB(flash builder)中能否生成IPA文件
1-4.配置概要文件 *.mobileprovision,關聯了設備的UDID,在IOS開發者中心創建並下載。這個文件決定了在你的開發過程中產生的IPA文件能夠運行在哪些設備上
而最終在FB中生成IPA所需要的文件為1-3和1-4,我之前很SB地認為這2個文件之間沒有什麼直接關係,但是實際上一旦你在IOS開發者中心重新替換了CSR文件之後,你的原有的配置概要文件就會全部失效,需要重新創建並下載。在替換了CSR文件之後沒有重新創建並下載mobileprovision文件,這是我所犯的第1個錯誤
2.在adobe開發者中心所提供的教程中,有如下的原文“將生成CSR以獲得IOS開發者/分發證書”“根據需要生成IOS開發者證書或IOS分發證書”。它的意思是,cer、p12、mobileprovision文件均有2種類別,一種對應的是開發階段,一種對應的是分發(即發佈)階段(distribute )。即,我要在設備上進行調試或運行我的程式,在生成IPA時需要選擇由開發者證書cer文件所導出的P12文件和在IOS開發者中心創建並下載的的用於開發的mobileprovision文件;而當我導出發行版IPA需要提交到APP STORE時,這時需要選擇由分發者證書導出的P12文件和用於分發的mobileprovision文件。在導出發行版時忘了更新P12和mobileprovision文件,這是我犯的第2個錯誤
3.承接2,在導出用於分發的P12證書時,需要註意一個細節,這個細節步驟是在導出用於開發的P12證書時所沒有的。在導出分發P12證書之前,需要先在開發者中心創建分發的cer文件那個界面里點擊下方的鏈接下載一個WADR名稱開頭的cer文件,然後將這個文件在MAC下添加進鑰匙串,這個文件中會在你導出P12文件時附帶上蘋果的簽名。如果你沒有這個步驟直接選擇導出P12,將無法通過提交APP時的證書簽名驗證。在導出用於分發的P12證書之前沒有下載WADR並添加進鑰匙串,這是我犯的第3個錯誤
4.在1中,我提到“替換CSR文件”,什麼情況下需要我們替換CSR文件呢?這涉及到一個非常隱晦非常微妙的問題。在我的發佈過程中,遇到了這樣一個情景:在設備上可以調試及運行,但是發佈後提交應用時一直無法通過應用驗證,並且保證前面所提到的1、2、3都沒有問題,讓人百思不得騎姐。最後發現問題所在:在生成CSR文件時,除了填寫開發者賬號郵箱之外,還需要填寫一個常用名稱(common name),而這個名稱必須和你在申請IOS開發者賬號時所填寫的名稱一致。而坑爹的是,這個一致性要求僅僅在提交APP時才進行驗證,即在之前在開發階段,即使名稱是亂填寫的,也不會影響到你在設備上調試或運行程式。我最後發現問題所在為我在生成CSR文件時所輸入的名稱對比和證書中顯示的名稱在First Name和Last Name之間少了一個空格。。。。(網上還有一種說法是國外程式員的驗證方式是Last Name在前First Name在後)在生成CSR文件時填寫的常用名稱和IOS開發者賬號中的名稱不一致,這是我犯的第4個錯誤