SDK系列-iOS FrameWork制作概述
SDK系列-FrameWork的制作(1)
SDK系列-FrameWork的制作(2)
在制作frameWork制作前期知識要點的準備和概述;
i386 x86_64區別
1、armv7,armv7s,arm64,i386,x86_64概念
可閱讀該作者文章:armv7,armv7s,arm64,i386,x86_64都是什么
arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|
iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7: iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|
iPad mini|iPod Touch 3G|iPod Touch4
i386是針對intel通用微處理器32位處理器
x86_64是針對x86架構的64位處理器
模擬器32位處理器測試需要i386架構,
模擬器64位處理器測試需要x86_64架構,
真機32位處理器需要armv7,或者armv7s架構,
真機64位處理器需要arm64架構。
2、-ObjC -all_load -force_load 區別
可閱讀該作者文章:關于Xcode上的Other linker flags
-ObjC:加了這個參數后,鏈接器就會把靜態庫中所有的Objective-C類和分類都加載
到最后的可執行文件中
-all_load:會讓鏈接器把所有找到的目標文件都加載到可執行文件中,但是千萬不要
隨便使用這個參數!假如你使用了不止一個靜態庫文件,然后又使用了這個參數,那么你
很有可能會遇到ld: duplicate symbol錯誤,因為不同的庫文件里面可能會有相同的
目標文件,所以建議在遇到-ObjC失效的情況下使用-force_load參數。
-force_load:所做的事情跟-all_load其實是一樣的,但是-force_load需要指定
要進行全部加載的庫文件的路徑,這樣的話,你就只是完全加載了一個庫文件,不影響其
余庫文件的按需加載
查看.a .frameWork的結構
查看庫包含的架構信息:
lipo -info xxxxx.a
合并多個架構:
../xxxx.a```
``` lipo -create ../xxxx.framework/xxxx ../xxxx.framework/xxxx -output ../xxxx```
拆分庫:
```lipo 待拆分的fat庫 -thin 需拆分框架 -output 新庫```
編譯的原理
參考資料:
[iOS開發~制作同時支持armv7,armv7s,arm64,i386,x86_64的靜態庫.a](http://blog.csdn.net/lizhongfu2013/article/details/42387311)