第一次接觸iOS開發(fā)和Xcode,被要求封裝一個SDK念脯,中間太多的坑棚贾,因此記錄下來窖维,防止以后忘記榆综,也可以讓第一次接觸Xcode封裝SDK的小伙伴少踩一些坑。
1.封裝SDK的原則:
當(dāng)拿到一堆頭文件以及他們的實現(xiàn)铸史,所謂封裝就是給這些頭文件和實現(xiàn)穿上一層衣服鼻疮,比如我們需要封裝的是algo文件夾的核心算法做一個封裝,我們需要在另一個文件夾interfaces里面增加一些.h和.mm(,cpp)文件來調(diào)用algo里的類來實現(xiàn)相同的功能琳轿。需要注意的一點是判沟,在interface中的的.h文件如果#include了其他的頭文件,則該被include的頭文件對應(yīng)的cpp也需要加入到編譯中崭篡,因此我選擇將需要include的頭文件加在interfaces文件夾的cpp文件中挪哄,因為大多數(shù)情況下我們需要include頭文件不過是一些已經(jīng)編譯好的Framework,我們是無法拿到具體的實現(xiàn)源碼的琉闪。
2.Xcode的設(shè)置
選中project中燥,選擇對應(yīng)的target,選擇buildphase塘偎,將程序中所有的cpp cc mm文件都加入到Compile Sources當(dāng)中疗涉,另外,將想暴露出來的h hpp文件加入到Headers中的Public下吟秩,其他的不想暴露的頭文件加入到project下咱扣。
3.需要依賴的第三方庫
有時候我們需要依賴第三方的庫,比如這里我依賴了一個叫之前已經(jīng)制作好的Common的Framework涵防,這時候我只需要將他的頭文件commonauth.h包含到我的interfaces中的cpp文件中即可使用其接口闹伪。不需要將Framework引入到SDK工程中來,因為編譯的時候不會鏈接這些文件壮池,只有在具體的app中運行的時候才會鏈接這些依賴的
4.編譯的時候需要注意的地方
使用Xcode的Command + B的命令編譯出來的Framework為指定平臺的偏瓤,在設(shè)置里可以指定,由于我需要的是全平臺的椰憋,所以需要自己寫一個build文件再執(zhí)行它厅克。
ps:在xcode中,如果需要引入外部資源橙依,大多數(shù)情況下直接拖入到工程中证舟,并勾選copy it if needed,但對于一些比較奇怪的文件格式窗骑,如model文件女责,就需要在build phase中下圖的選項中加入應(yīng)用資源文件的路徑。