打包和調試靜態庫(2),打包調試靜態庫
我們接著上一次的講...
1.上一次說過,真機的靜態庫只能在真機上用,模擬器的靜態庫只能在模擬器上用,所以,就先講一下產生了真機和模擬器的.a靜態庫後,怎樣避免來回拖拽真機和模擬器的靜態庫到工程裡,也就是直接拖拽一個靜態庫就行。
解決方案:利用命令列語句
1.切換路徑,到Products目錄下
2.合并靜態庫
這句命令列理解起來並不難,我大體說一下,lipo -create 要合并的靜態庫1 要合并的靜態庫2 -output 合并後的靜態庫檔案名稱,注意,預設儲存到目前的目錄下。
這樣合并完的靜態庫就搞好了,只要把lib中的靜態庫替換成這個staticDemo.a的靜態庫,然後拖入你的工程中就可以隨意用了。不過,由於是合并的靜態庫,大小肯定並比合并之前的大,會讓你的項目也跟著變大,所以在真實項目要打包的時候最好還是根據需求來,這裡只是告訴大家這麼一個辦法可以解決,自己平常可以用。
2.上一個圖,我們能注意到我們產生的靜態庫檔案夾都是Debug-xxx,這個Debug代表的是調試,還有一種發布Release狀態,那如何產生呢?
然後在分別在模擬器和真機下Command+B一下,就可以產生了。產生後顯示如:
Release的用法和Debug的基本一致。那麼他們兩個有什麼區別呢???
比較正經的說法是:
調試版本會包含完整的符號資訊,不會對代碼進行最佳化。
發布版本不會包含完整的符號資訊,代碼是會進行最佳化的。
比較通俗的說法是:調試版本會把你程式中的NSLog這樣的列印語句也會執行,而發布版本就不會。
3.調試靜態庫
現在我們Command+R運行一下,會出現兩個錯誤。
怎麼解決呢?(解決完就可以調試我們的靜態庫函數了)
很簡單,只要配置一下就好了,
加完這兩項就真的ok啦!
4.打包.framework和.a的步驟很像。等有時間我在更新一個.framework的,說一下注意點就行啦。
.framework和.a的區別就是.framework不需要你手動將.h和bundle拖到你的檔案夾裡,會自動產生。
打包和調試靜態庫就到這了!!