公司開發(fā)的SDK,是集成了各個平臺的商品,包括購買、分享、提現(xiàn)等功能,為了加快進度,我是使用了一些第三方。但是有些需求,比如分享到微信朋友圈或者還有,必須用到微信的SDK??紤]到后期的維護成本和集成,筆者采用了cocoapods管理第三方庫。
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)公司、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!
筆者有片文章專門介紹SDK的開發(fā)步驟的,大家可以參考,我這里就直接進入主題了。
首先,你創(chuàng)建一個靜態(tài)的framework工程MyTestSDK,把這個工程集成cocpapods,至于如何集成cocpapods,網(wǎng)上有教程,自己搜索。這個時候把你項目中所用的第三方庫添加到Podfile文件中,然后 pod install。這個時候你command + B 編譯運行,如果你的第三方庫中還有Bundle資源,那么編譯后,第三方庫的bundle資源會被編譯,一起放到Products文件下的framework文件中,右鍵Show in Finder就會看到。如下圖所示的MBProgressHUD文件夾,里面都是MBProgressHUD第三方的資源文件。
然后把你的項目放入SDK工程中,編譯運行一下,看看有沒有錯誤。之所以先把SDK工程選用cocoapods管理,就是怕你的項目放入SDK中運行報錯。沒有任何問題,直接編譯即可。
由于SDK中的第三方是通過cocoapods管理的,所以接入者的項目也要用cocoapods管理。
1:把SDK工程中,Products文件夾下的framework文件copy到項目中,最好項目中建立一個文件夾,專門放SDK和bundle。我是放到了一個文件夾中,方便分類尋找。如下圖所示:
2:打開終端,cd到SDK所在的文件夾下,執(zhí)行如下命令,回車,創(chuàng)建spec文件。
其中,MyTestSDK是你的SDK名稱。
創(chuàng)建出來的spec文件,是個很長的文件,但是大部分都是注釋的,我這里只提取了有用的信息展示出來:
然后把spec中依賴的第三方庫,逐個加入到項目中的Podfie文件中。然后 終端打開,cd到自己的項目中,pod install即可。
本人親自測試過的,No Problem。當初感覺SDK如果依賴了第三方庫,接入的項目中也有同樣的第三方庫,會不會沖突啊,感覺好難搞啊。事實證明,通過spec進行依賴,可以很好的解決這個問題,也就沒有那么麻煩了。
首次開發(fā)SDK還是遇到了很多問題,運行出現(xiàn)很多bug,但是最后還是一一解決了,就是沒有記錄下bug和解決發(fā)的方法。
1;path路徑不對,就會報錯 ,如下
是因為我把路徑寫成了:
其實正確的寫法是:把“/”放在前面
2:SDK中有第三方,但是項目中的Podfile里面沒有這個第三方,報錯如下所示:
解決辦法是就是在項目中的 Podfile里面加入缺失的第三方庫,重新 pod install。
盡管App store里存在眾多種類繁雜,服務(wù)各異的應(yīng)用,但所有App都有一個共同的目標:提供 極致的用戶體驗。
好的用戶體驗是由許多因素構(gòu)成的。我們需要知道,一款好產(chǎn)品背后必定是經(jīng)過團隊多方面打磨、迭代而成。產(chǎn)品迭代必不可少的一項內(nèi)容,就是取決于你所使用的工具,比如iOS SDK(軟件開發(fā)工具)開放的通用模塊,從beta測試和錯誤監(jiān)控到用戶行為分析和A/B測試,都有相應(yīng)的產(chǎn)品,可以大大縮減金錢、時間成本,從而提高應(yīng)用整體運營的敏捷性。
這里列出了幾款iOS必備軟件開發(fā)工具,直接根據(jù)需要配置即可。
地址:
UserTesting的按需測試平臺由一個超過一百萬測試者的座談小組組成,可以在移動設(shè)備上測試網(wǎng)站、App甚至是原型。在這里幾小時內(nèi)就可以得到人工的反饋意見,包括一段記錄測試過程的視頻和一份完整的文字報告。開發(fā)者可以通過這些內(nèi)容詳細地了解用戶的使用習(xí)慣,以及產(chǎn)品在使用過程中遇到的各種問題。
主要特點:
超過百萬的用戶網(wǎng)絡(luò)
可直接面試
視頻模式和自動轉(zhuǎn)錄信息
地址:
openinstall SDK能提供多種服務(wù),包括最讓開發(fā)者頭疼的iOS多渠道統(tǒng)計,相對iTunes Connect 的“營銷活動”統(tǒng)計維度更豐富,且實時靈活,適合多渠道推廣使用。同時提供免填邀請碼安裝、一鍵拉起(Deeplink)、攜帶參數(shù)安裝、地推統(tǒng)計、CP結(jié)算、廣告投放統(tǒng)計等多個使用場景以及應(yīng)用優(yōu)化功能,讓App用戶體驗更佳,拉新轉(zhuǎn)化率更高。
主要特點:
多渠道攜帶參數(shù)統(tǒng)計
免填邀請碼等優(yōu)化用戶體驗
提高拉新轉(zhuǎn)化率
地址:
另一個具有多種功能的SDK是Instabug?,它包括了bug報告工具,讓您的用戶可以將bug發(fā)送給您;還有崩潰報告工具,可以向您發(fā)送所需的堆棧跟蹤信息,甚至不用導(dǎo)航。您還可以對比當前版本和前一個版本,觀看用戶操作的屏幕記錄。Instabug 可以與您的工作流程集成,然后通過Slack和JIRA發(fā)送提醒給整個團隊。
主要特點:
bug屏幕記錄
交互式用戶反饋
Bug的建議和類型分析
地址:
Optimizely?的試驗平臺給web網(wǎng)站、移動端網(wǎng)頁和移動端App提供解決方案。移動工具可以讓您很流暢地對應(yīng)用的各個部分進行即時實驗??焖俚沁@個工具的特點,您不需要等待應(yīng)用商店的審核即可更新應(yīng)用。同時,Optimizely 還可以讓您根據(jù)精準化的目標市場創(chuàng)造個性化的體驗。
主要特點:
即時推出和分階段推出
視覺編輯
自定義受眾以及精準化目標定位
地址:
Foresee?提供了一套多渠道的“用戶體驗”工具,其中包括自助用戶反饋工具。通過Foresee的反饋工具,您可以鼓勵用戶填寫簡單的調(diào)查問卷,讓他們提出問題,以避免問題擴大化。此外,您還可以為核心用戶快速部署評級和審核提示。此外,F(xiàn)oresee還可以重播整個會話,提供App用戶體驗的全貌。
主要特點:
簡單,自助化
個性化評分和評審
提醒會話重播
相比于采購需要大量定制化開發(fā)或自研的產(chǎn)品,使用標準化通用的SDK,可以大大縮減金錢、時間成本,從而提高公司整體運營的敏捷性。
這就像你需要用電,但并不需要從頭建發(fā)電廠,更明智地做法是主動關(guān)注哪些能力是市面上的SDK廠商已可提供的,哪些還不成熟;做好SaaS、定制化軟件和自研工具之間的分配,為那些需要“拼速度”的一線業(yè)務(wù)準備好“利器”。
因為公司的組件化開發(fā)的深入,雖然自己只是使用不需要去處理組件(組件模塊是另外的小伙伴+大佬架構(gòu)師負責(zé)的),還是需要自己造輪子。就屢屢了...花了點時間整理了下簡單的,這些都是為組件做基礎(chǔ),后續(xù)會持續(xù)更新并實現(xiàn)組件。
廢話就不多說了,關(guān)于SDK可以自行百度這邊就不扯了,開始下面的正文。
靜態(tài)庫: .a 和 .framework
動態(tài)庫: .dylib 和 .framework
選擇 Cocoa Touch Static Library :
Build Active Architecture Only 設(shè)置為YES,表示只編譯當前的 Architecture 版本,為了適配各種機型需要關(guān)閉當前的設(shè)置。
可以在編譯完成后查看生成的靜態(tài)庫支持的系統(tǒng)架構(gòu),終端命令:
結(jié)果如下:
一般第三方只提供 release 的版本。
這邊就不多講了,國際化語言跟平時設(shè)置是一樣的,具體的就附上個通道吧 iOS之SDK開發(fā)的總結(jié) ,查看上面介紹的第四點即可。
真機、模擬器各需要運行一次生成對應(yīng)的靜態(tài)庫,根據(jù) 第4點 切換環(huán)境編譯生成對應(yīng)的靜態(tài)庫,編譯快捷鍵 cmd + B 。
如何查看編譯是否成功,查看工程目錄如下圖紅色框里面的名字,如果是紅色的則未編譯,下圖是已經(jīng)編譯后的顏色:
編譯完成后可以點擊上面紅色框 Show In Finder 進入該文件目錄。
終端命令
注 :格式如上,上面的空格不是為了美觀,而是格式
舉個例子:
靜態(tài)庫制作完成,將靜態(tài)庫拖入工程中,記得導(dǎo)入相應(yīng)需要暴露的頭文件。因為靜態(tài)庫沒有提供相應(yīng)的頭文件,只是單純的一個.a文件。
使用 framework 制作靜態(tài)庫的方法就放到 動態(tài)庫 中一起說明,具體的可以查看 動態(tài)庫--2、配置Mach
在制作動態(tài)庫上跟制作靜態(tài)庫的流程是大同小異,主要介紹不同的。
新建工程,選擇如下:
Mach-O Type 默認為動態(tài)庫,如果需要制作靜態(tài)庫的話在這邊修改 framework 類型即可。
配置完成后, cmd + B 分別編譯生成模擬器、真機 Framework 。
終端命令與制作.a靜態(tài)庫是一樣的,不同的是選擇的文件,需要用來合并的文件如下:
終端命令如下:
別忘了該空格的地方帶上空格。
舉個例子:
輸出的文件是 result.lipo ,它的格式是 .lipo ,將該文件修改成合并文件時的文件名并放入其中一個 framework 中替換,通用的 Framework 制作好了。
圖中紅色框的文件是替換合并后的文件。
將庫導(dǎo)入需要使用的工程中即可。
在工程中新建bundle,iOS-Resource-Setting Bundle 命名bundle,比如Resource.bundle。
創(chuàng)建一個文件夾如:images,將需要放入的圖片拖進去即可,拖進去后Xcode還是未顯示出加入的圖片,可以將bundle取出然后重新添加進去就有了。
項目中導(dǎo)入使用的時候需要配置的編譯參數(shù) Build Settings - Linking - Other Linker Flags ,相關(guān)的介紹附上。
如果靜態(tài)庫中有 category ,那么需要添加 -ObjC 參數(shù)標識,否則可能會報: unrecognized selector sent to instance ,因為鏈接器就會把靜態(tài)庫中所有的Objective-C類和分類都加載到最后的可執(zhí)行文件中。
會讓鏈接器把所有找到的目標文件都加載到可執(zhí)行文件中,但是千萬不要隨便使用這個參數(shù)!假如你使用了不止一個靜態(tài)庫文件,然后又使用了這個參數(shù),那么你很有可能會遇到 ld: duplicate symbol 錯誤,因為不同的庫文件里面可能會有相同的目標文件,所以建議在遇到 -ObjC 失效的情況下使用 -force_load 參數(shù)。
所做的事情跟 -all_load 其實是一樣的,但是 -force_load 需要指定要進行全部加載的庫文件的路徑,這樣的話,你就只是完全加載了一個庫文件,不影響其余庫文件的按需加載
iOS-SDK從無到有(學(xué)有所出,有所記)
配置和使用靜態(tài)庫
iOS之SDK開發(fā)的總結(jié)
iOS 庫.a 和 framework的區(qū)別和創(chuàng)建