剛升級Xcode7.2,用起來很是不習慣.前幾天打包靜態庫.a文件時就遇到了問題:
1.把Debug-iphonesimulator 裏的.a文件以及.h文件拖拽到項目中,用模擬器編譯時,選擇iPhone5s及以上都正常,但iPhone5及以下就出現了以下錯誤,
用 lipo -info [文件路徑] :顯示靜態庫文件的架構類型, 只有 x86_64 ,而沒有 i386 . 記得當時打包爲.a文件時,選擇模擬器的 IOS Simulators是iPhone 6s plus ,如果選擇iPhone5 及以下,結果恰恰相反(只有i386,而沒有x86_64). 糾結這個問題好久,查看了很多資料都沒提到.最終在一個國外網站看到有人已經解決,如下.
解決方式一定要把Build Active Architecture only改爲NO,如下:
下面簡單來說一下靜態庫的製作:
1.選擇FrameWork & Library 下的 "Cocoa Touch Static Library"
2.輸入靜態庫名稱
3.添加需要打包的庫資源,要實現的方法,屬性 ,邏輯處理好
4.選擇需要暴露出來的.h文件,.m文件會自動編譯到.a文件中
點擊+號,添加 .h文件
5.要把Build Active Architecture only改爲NO
6. 選擇真機設備,然後Command + B編譯,libStaticTest.a文件會從紅色變爲黑色
7.選擇模擬器,然後Command + B編譯,模擬器和真機環境下用的.a文件是分開的
8.右擊"show in Finder",查看製作好的.a文件.
注: 1).Debug-iphoneos 文件夾裏面的東西使用在真機上
2).Debug-iphonesimulator 文件夾裏面的東西是在模擬器運行的.
9.合併兩個文件(不是必須) 如果想讓一個.a文件能同時用在真機和模擬器上,需要進行合併
在終端輸入指令:lipo -create [文件路徑1] [文件路徑2] -output [生成文件路徑/XXX.a]
注: lipo -info [文件路徑] :顯示靜態庫文件的架構類型
花了大半個小時寫下這篇博客,希望對不理解的攻城獅有所幫助.