接入ios sdk的一些總結ios
最近半個月,接了6個ios的sdk,其中苦難真的是難以言喻。之前雖然也用過xcode,但也就是簡單用用,瞭解很是皮毛,並且這麼久也忘得差很少了。此次接sdk,徹底是新的語言,新的系統,新的ide,一切從零開始。
xcode
首先應該是系統的熟悉,經常使用軟件的安裝,鍵盤和鼠標的使用也略微有些不一樣,這些都略過不提。看了一下oc基礎教程,大體瞭解xcode的使用,因爲有C++基礎,oc的簡單使用也很快掌握。這裏提一個小發現,mac上的文件,像是作引用計數的,一個文件拷貝到另外一個地方,只有一個存檔,刪除時提示移到廢紙簍仍是刪除引用。
app
xcode裏面關於庫的引用,首先庫有這麼幾種,*.framework,*.a,*.dylib,還有*.bundle資源。要使用的話,首先要將其引入,方法有右鍵添加,拖拽,build phases設置,或者在庫上面勾選引用的target。xcode中,多targets的設計,和target的引用使用勾選的方式,比較方便。說到這兒,不得不提一下,拖入工程時,提示的幾個選項:iphone
第一個:要不要拷貝,不清楚依據的是什麼,通常我是本身拷貝到我想要的目錄,而後不選這個,更加便於管理。ide
Create groups for any added folders:目錄裏面的全部文件都被引入,都會加入編譯,代碼就這樣弄,外部添加或刪除不影響工程裏面的結構。 Create folder references for any added folders:只引入目錄,外部任何變化會反映到工程中這個group的變化。若是是資源引入,就這樣,無需參加編譯,只是運行中使用。
講講錯誤提示,通常就這麼幾個:
優化
1.缺乏庫,將對應庫加入就行。
ui
2.file is universal(x slices)……,對應的庫沒有對指令集進行優化,因此這個指令集沒法完成優化,須要將這些庫從新針對這些指令集從新生成。不然的話,就須要把這個指令集從target中移除。指令集就是architecture。
lua
3.ignoring xx, missing requried xxx,就是不支持這個指令集,會報奇妙的錯誤,移除便可。
spa
3.framework xx not found,缺乏庫,ios sdk版本太低,升級xcode。
.net
4.framework Metal not found。ios8的庫,xcode5出提示,其實並無用到這個庫,是xcode的bug,網上有具體描述和解決辦法,可是有些狀況是怎麼也沒法解決的,只能升級xcode。我就升級了xcode,問題解決了。
接下來是最頭疼的問題,ipa的一系列認證、簽名過程。編譯的debug和release與code signing的developer和distribution是獨立的,不相關,這點須要知道。我在網上看了不少關於數字簽名、公鑰、私鑰、證書的帖子,基本上是弄懂的apple的這一系列流程,可是更加細節的問題和一些設置就不清楚了,這也是不開源的項目的弊端吧。
我給出一篇帖子,講得挺好:http://blog.csdn.net/phunxm/article/details/42685597。
還有不少在工做中發現的細節,好比有時能直接將app拖入到itunes中安裝,有時安裝卻不成功,這是provisioing profile 描述文件不匹配的問題,distribute能夠是由於,它從新簽名並打入對應描述文件。在code sign中設置了描述文件,問題獲得解決。模擬器包是無簽名和描述文件的,至於其餘差別還不清楚,不過包會比較大。真機包扔到itunes中能夠安裝,我的認爲與archive的同樣的。ipad出現1x,2x的問題,將targeted device設置爲iphone/ipad就好了。設備上無需描述文件,由於安裝包已經自帶了。
最後,仍是留了很多問題,之後有機會再來處理了:
1.在xcode5中能編譯過的,升級到了xcode6,arm64編譯不過了,提示cocos2dlib和luabings相關的150個未引用的異常。
2.編譯設置裏面,有個平行編譯選項,發現就算不勾選也比一個一個target要快。
3.看到有地方講了entilement文件,咱們項目裏面沒有用過,不清楚是什麼個意思。
4.schemes設置裏面,關於build,archive,run,profile,test,就知道archive和run,build是設置,其餘的都還不清楚。