一:如何打包并分發(fā)安裝?
我們都知道,為蘋(píng)果開(kāi)發(fā)應用需要通過(guò)蘋(píng)果審核并在A(yíng)pp Store上架,但審核周期極為漫長(cháng),同時(shí)如果需要在發(fā)布前,想通過(guò)內側的方式對自己的應用進(jìn)行測試,都需要用到程序的打包方式,下面,app軟件開(kāi)發(fā)馳騁網(wǎng)絡(luò )介紹幾種主要的打包方式:
分發(fā)安裝包供越獄機使用
程序打包前,需要有與應用對應的App ID以及對應的Distribution版本的Provisioning File, 注意,一定要是Distribution版本的,Deployment版本的Provisioning File有效性很短,不能用作正是發(fā)布。
第1步:設置代碼簽名
在iOS設備上運行的代碼都必須有簽名,點(diǎn)擊項目名(左側導航欄中最上側的藍色圖標),會(huì )顯示出Projects及Targets兩個(gè)選項卡,分別將其中的Build Setting中的Code Singing中的Release部分選中為我們的Distribution版本Provisioning File
第2步:生成Archive文件
將運行設備從模擬器設置成iOS Device, 可以不用連接設備,但必須選擇成iOS 設備,否則下面步驟無(wú)法進(jìn)行。
店家Products -> Archive,如果簽名設置正常,簽名、編譯過(guò)程會(huì )正常的持續一段時(shí)間,成功后,會(huì )彈出Organizer,并將剛剛進(jìn)行的Archive文件顯示出來(lái)。
點(diǎn)擊"Distribution"按鈕,會(huì )彈出三個(gè)選項
第一個(gè)選項用作向App Store正是提交用,這里我們用不到,第二個(gè)選項后面會(huì )用到,這里我們也暫且不提,選中第三個(gè)選項,將Archive文件導出,然后保存。
在桌面(默認路徑)找到感剛剛找到的后綴名xcarchive的文件,右鍵選擇,點(diǎn)擊“顯示包內容”,將Product -> application 下的名為項目名稱(chēng)的文件拷貝出來(lái)。
第3步:生成iPA包
打開(kāi)iTunes,將剛剛拷貝出來(lái)的名為項目名,后綴名為app的文件拖拽到iTunes的資料庫中(界面左上角), 在資料庫-> 應用-下找到我們剛剛拖拽進(jìn)去的應用,右鍵選擇,選擇在Finder中顯示,可以看到一個(gè)ipa安裝包,此文件便是我們將要分發(fā)給越獄用戶(hù)的安裝包了,此文件其實(shí)與審核通過(guò)后從App Store中下載的安裝包沒(méi)有區別。
制作Ad Hoc包供內測
針對個(gè)人開(kāi)發(fā)者,如果開(kāi)發(fā)者想在應用上架之前進(jìn)行對應用進(jìn)行內側,可以通過(guò)Ad Hoc方式進(jìn)行分發(fā),這種方式下的測試機不需要越獄。
AD Hoc安裝包生成方式很多,具體請參考此文
第一:可測試的設備最多只有一百臺,且需要提前提供設備的identifier,開(kāi)發(fā)者在provision中將此設備的identifier添加到provisioning file中。
第二:Ad Hoc安裝的過(guò)程中需要開(kāi)發(fā)者提供provisioning file
制作企業(yè)分發(fā)包
針對企業(yè)開(kāi)發(fā)者賬戶(hù),也可以將應用選擇為企業(yè)內分發(fā)安裝,而不通過(guò)蘋(píng)果的應用商店,設備不需要越獄。
企業(yè)安裝包打包的過(guò)程中大體步驟沒(méi)有太大區別,無(wú)非是在Organizer中點(diǎn)選Distribute后,選擇第二個(gè)選項進(jìn)行打包。安裝過(guò)程參考此文,注意!如果是企業(yè)安裝包,那么并不要求設備一定越獄。企業(yè)分發(fā)包只能由企業(yè)開(kāi)發(fā)者賬號進(jìn)行,普通開(kāi)發(fā)者無(wú)此權限。
二:Xcode debug log無(wú)法顯示中文
默認情況下,當調試器為L(cháng)LDB時(shí),NSLog輸出函數是無(wú)法顯示中文的,如果將調試器換回GDB,中文可正常顯示,更換方法如下圖所示:
注意更換調試器后,會(huì )有下面兩個(gè)問(wèn)題:
1:編譯時(shí)會(huì )有調試器相關(guān)的警告
2:使用GDB調試,速度較LLDB確實(shí)有下降
三:模擬器調試 vs 真機調試
功能性開(kāi)發(fā)時(shí),兩者基本沒(méi)區別,模擬器的使用稍顯便利,機器上最起碼不用老插著(zhù)設備,編譯運行的速度也較真機要快,同時(shí)有些應用情景模擬器模擬起來(lái)比較方便,比如內存警告這種錯誤,想在真機上模擬出來(lái)還是比較困難的。
模擬是在PC機上模擬的,運行環(huán)境,包括CPU速度,可用內存等較真是設備都有很大的優(yōu)勢,所以,并不能將應用在模擬器上的性能表現認為是應用的真實(shí)表現。
有些功能只能在真機上測試,比如APNS,比如多點(diǎn)觸摸手勢,這時(shí)模擬器就無(wú)法勝任了
架構的不同(x86 vs ARM)造成了內存管理上的些許不同,所以,在調試內存相關(guān)問(wèn)題時(shí)盡量使用真機
四:SVN刪除新添加,且未commit的文件
如果一個(gè)文件新添加,且未commit,那么如果想刪除此文件,首先點(diǎn)擊右鍵-> source control -> discard changes.
此動(dòng)作也就是執行了svn revert命令,但為什么xcode刪除文件未將svn revert 及svn delete這兩個(gè)命令捆綁到一起就不得而知了。
五:如何將crash log符號化
首先電腦內要有crash log對應應用發(fā)行版的archive,這樣,將設備接入后,crash log自動(dòng)會(huì )將費解的地址符號變成可讀性更高的函數名符號表。