ios開發:Xcode 製作SDK及使用

1. framework

1.1 創建一個framework工程

創建一個framework工程


未完 待續

2. .a

2.1 創建一個.a工程

創建一個.a 工程

創建之後會默認生成一個和庫名一樣的文件夾和 類(XCode 7 好像沒有生成類 需要自己手動創建)

在這裏插入圖片描述

2.2 添加相關代碼

在這裏插入圖片描述

2.3 編譯之後會生成.a文件如下圖

在這裏插入圖片描述

2.4 別人用我們生成的庫 需要頭文件 這時我就就需要吧我的的.h文件暴露出去

  • 第一種方式:直接把所有需要暴露的頭文件copy出去(不推薦)
  • 第二種方式:用系統的CopyFile 添加對應的文件夾包含所有的頭文件如下圖(個人推薦)

在這裏插入圖片描述

  • 第三種方式:用系統的header File 生成如下圖
    在這裏插入圖片描述

在這裏插入圖片描述

2.5 生成模擬器和真機對應的.a文件

由於真機和模擬器架構不一樣 所以我們要分別針對模擬器和真機生成不同的.a庫
真機生成 在真機下編譯 ,模擬器生成在模擬器下編譯
最後會生成兩個靜態庫

在這裏插入圖片描述

合併兩個靜態庫 終端命令: lipo -create 真機.a地址 模擬器.a地址 -output 輸出.a地址

在這裏插入圖片描述

新建一個工程 ,並導入剛纔創建的.a 靜態庫 在模擬器 IPhone 8上測試可以 ,但是更換到模擬器iPhone 5編譯報錯

爲什麼呢?
每一個設備都有自己的CPU架構,每一個靜態庫也有自己支持的CPU架構
對於iOS 模擬器

  • iPhone4s~5 : i386
  • iPhone5s~8plus : x86_64
    真機
  • iPhone 3gs ~ 4s : armv7
  • iPhone5~5c: armv7s
  • iPhone6~ : arm6

armv6, armv7, armv7s是ARM CPU的不同指令集,原則是向下兼容的。例如iPhone4S CPU支持armv7, 但它同時兼容armv6,只是使用armv6指令可能無法充分發揮它的特性。

查看靜態庫.a 對處理器架構的支持 lipo -info xxx.a

解決不支持架構–>>Build Active Architecture Only中的Debug如果爲YES,就是說只能調試當前活躍的架構,我們當前選中的即是活躍的,所以設置爲No即可

在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章