其實文章名應(yīng)該叫:Xcode打包上傳AppStore遇到問題
Archive upload failed with errors:
An XML parsing error has occurred.
The XML file:metadata.xml in /var/folders/......./1234.itmsp is NOT well-formed.
曾經(jīng)看到過一個段子:
女孩子最好找個程序員做男朋友懂盐,因為一般程序員脾氣好研侣,主要能認(rèn)錯角寸,因為程序員總是說:“只要告訴我錯在哪里痰催,我一定改田藐!”瑟俭。
其實真的是這樣岸妇恕(一臉認(rèn)真)酌住。
前幾天在Xcode上打包ipa玉掸,準(zhǔn)備上傳AppStore刃麸。
經(jīng)過漫長的等待,Archive終于完成了司浪,到了這個界面
然后選擇Validate泊业,又是漫長等待... 顯示成功啦!
然后就是藍(lán)色的大按鈕Upload to App Store啊易,信心滿滿吁伺,驗證都通過了,上傳不會有問題了吧租谈,就算有篮奄,最多也就是網(wǎng)絡(luò)不行捆愁,重新上傳。
結(jié)果窟却,蹦出來個這玩意
然后我一臉萌比昼丑,跑去google這個問題[The XML file:metadata.xml NOT well-formed.]。
然后搜到夸赫,有很多小伙伴也遇到過這個問題:
- Application Loader Error: XML Parsing Error has occurred
- XCode Submit to App Store button produces XML error
- An XML parsing error has occurred
總結(jié)起來菩帝,大概就是Xcode工程中的某些內(nèi)容(例如Info.plist文件中的配置,或者是項目名)中附帶了某些特殊符號茬腿,這些符號大包時被寫入了一個叫metedata.xml的文件呼奢,特殊符號導(dǎo)致這個XML文件的格式不正確。所以出現(xiàn)了上述錯誤切平。
之前看到這個錯誤握础,我犯了個錯。我先跑去檢查Info.plist悴品,去檢查我的項目名禀综。其實,我應(yīng)該從報錯的這個metedata.xml文件入手他匪。
我看到metedata.xml文件的路徑這么復(fù)雜,估計是某個很隱秘的臨時文件夸研,我覺得我是找不到這個文件的邦蜜。就這樣,各種檢查亥至,糾結(jié)了一兩個小時悼沈。最后看到某個帖子中,別人打開了這個文件夾姐扮。絮供。。然后我恍然大悟似的茶敏,打開了Finder->前往->前往文件夾壤靶,輸入了/var,然后一級一級的找到了這個metedata.xml文件惊搏,用Sublime打開了這個文件贮乳。
上面報錯說NOT well-formed嘛,然后我就打開了XML格式驗證工具恬惯,把文件內(nèi)容全選復(fù)制粘貼進(jìn)去驗證向拆,驗證結(jié)果是
后來發(fā)現(xiàn)不知道是出了什么問題,貌似XML驗證器查不出來問題
xml_validate.png
然后我以為并沒有問題啊落君,怎么辦呢姐军。。抱虐。然后颈将,繼續(xù)糾結(jié)梢夯。然后偶然看了一下Sublime里面顯示的內(nèi)容,居然有一個圖標(biāo)(這里只是一個示例吆鹤,不是真的metedata.xml文件的內(nèi)容俺怼)
發(fā)現(xiàn)metedata.xml文件中,這個符號是在版本號后面的疑务,所以我去檢查了版本號沾凄,果然有問題。知允。撒蟀。重新輸入了一遍版本號就ok了。
總結(jié):
特殊符號真的很容易導(dǎo)致問題温鸽。通常我們輸入的時候保屯,特殊符號基本看起來都是空格(編輯器顯示不了,所以顯示出來時涤垫,只是占了一個空格的寬度姑尺,并沒有顯示內(nèi)容),比較容易檢查蝠猬,這次遇到的符號切蟋,根本顯示不出來,連一個空格的寬度都不占榆芦。
檢查要找重點柄粹。其實如果我一開始就去檢查metedata.xml文件,文件內(nèi)容不多匆绣,而且這個圖標(biāo)這么明顯驻右,直接用眼睛就能看出來的。
下面的字母A和字母B之間附帶了3個上面提到的特殊符號崎淳,你可能看不見堪夭,但是如果你把它復(fù)制到Sublime中,你就可以看到這個特殊符號拣凹∫瘃或者復(fù)制到QQ聊天輸入欄中,光標(biāo)定位在A左邊咐鹤,然后按??拗秘,你就會發(fā)現(xiàn)在A和B之間,你要多按幾次??祈惶,才能移到B的右邊雕旨。
A???B
在編輯文章的時候扮匠,上面的AB之間確實有特殊符號,但是發(fā)布之后凡涩。貌似復(fù)制不到了棒搜。糾結(jié),所以我用在線工具查一下這個字符的編碼吧:
查詢結(jié)果:
code.png
你可以這樣獲得這個字符:
code2.png