iOS中,Framework和 a的打包及使用

2021-09-11 12:45:46 字數 2405 閱讀 8449

最近在做乙個小專案,需要給客戶乙個demo測試,有一部分核心**暫時不想讓客戶知道,就想到了打包成framework或.a庫。庫有兩種:

靜態庫和動態庫的區別

使用靜態庫的好處

使用動態庫的好處

靜態庫的使用場景

ios裝置的cpu架構 模擬器

真機

沒有armv64

下面言歸正傳,做點正事

1.建立乙個新的工程,選擇下面這個模板:

完成 2.我這裡就在test操作了(親,你打包.a的時候,可以刪除預設檔案,拉入自己想加入的任何檔案)

下面在建立乙個person類

3.選擇需要公開的標頭檔案

4.修改配置

5.編譯 選擇generic ios device任意乙個模擬器各編譯一次,完成後,在工程的products資料夾下的.a檔案從紅色程式設計了黑色。編譯成功,然後show in finder

可以看到真機與模擬器都生成了.a。裡面都有有我選擇公開的標頭檔案 這個時候,可以用命令lipo -info 靜態庫名字來看下,支援的ios的cpu框架

6.合併靜態庫-讓模擬器和真機使用乙個靜態庫 命令如下:lipo -create第乙個.a檔案的絕對路徑 第二個.a檔案的絕對路徑 -output 最終的.a檔案路徑

這個生成的libtest.a,就是支援真機和模擬器的靜態庫了。建立乙個資料夾,把.a和標頭檔案拖進去,這個資料夾就是我們所需要的。

為了開發方便,我們可以使用生成的通用靜態庫,但是上線的時候只匯入真機的,這樣工程的體積也會小一些。

新建乙個工程,把我們的靜態庫拖進去,匯入標頭檔案。

###.framework靜態庫 1.xcode建立乙個新工程,需要選擇這個cocoa touch framework這個模板

2.建立person,也是輸入名字和年齡,和.a一樣

#####注意事項:

uibutton *button = [uibutton buttonwithtype:uibuttontypecustom];

//拿到路徑

nsstring *path = [[nsbundle mainbundle] pathforresource:@"bundle" oftype:@"bundle"];

//設定

uiimage *image = [uiimage imagenamed:@"delete"

inbundle:[nsbundle bundlewithpath:path] compatiblewithtraitcollection:nil];

[button setimage:image forstate:uicontrolstatenormal];

複製**

3.選擇要公開的標頭檔案 這裡主要是讓使用者知道有哪些方法和標頭檔案可以使用

注意。要在這個檔案中引入需要公開的標頭檔案

這裡有乙個注意點,公開的標頭檔案中,#import的其他類也要公開,新增到public中,如果不想公開,就在標頭檔案用用@class的方式,在對應的.m中用#import方式

4.修改配置

5.編譯 選擇generic ios device任意乙個模擬器各編譯一次,完成後,在工程的products資料夾下的.a檔案從紅色程式設計了黑色。編譯成功,然後show in finder

可以看到真機與模擬器都生成了.framework。裡面都有我們選擇公開的標頭檔案 這個時候,可以用命令lipo -info framework靜態庫檔案下二進位制檔案的名字來看下,支援的ios的cpu框架

6.合併靜態庫-讓模擬器和真機使用乙個靜態庫 命令如下:lipo -create第乙個framework檔案下二進位制檔案的絕對路徑 第二個framework檔案下二進位制檔案的絕對路徑 -output 最終的二進位制檔案路徑

將合成的二進位制檔案拖進任何乙個framework,替換掉原來的,然後把這個新的framework拖進專案就可以使用了

新建乙個工程,把我們的靜態庫拖進去,匯入標頭檔案。然後呼叫person中的方法。

如果靜態庫中有category類,就要在使用靜態庫專案的配置中新增-objc或者-all_load如果建立的framework類中使用了.tbd,則專案中也要匯入.tbd動態庫

注釋:部分名詞摘自網路。雖然說,學到的都是我們的,但是也不要忘記他人。

iOS 在framework中打包xib

廢話不多說,直接上圖 1 copy bundle resources 中加入相關xib 2 這裡是重點,呼叫的時候不能直接寫 objc view plain copy nsbundlemainbundle loadnibnamed yourxibname owner nil options nil ...

IOS 靜態庫和Framework區別

ios靜態庫和framework區別 一 什麼是庫?庫是共享程式 的方式,一般分為靜態庫和動態庫。二 靜態庫與動態庫的區別?靜態庫 鏈結時完整地拷貝至可執行檔案中,被多次使用就有多份冗餘拷貝。動態庫 鏈結時不複製,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只載入一次,多個程式共用,節省記憶體...

iOS庫 a與 framework區別

一 什麼是庫?庫是共享程式 的方式,一般分為靜態庫和動態庫。二 靜態庫與動態庫的區別?靜態庫 鏈結時完整地拷貝至可執行檔案中,被多次使用就有多份冗餘拷貝。動態庫 鏈結時不複製,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只載入一次,多個程式共用,節省記憶體。三 ios裡靜態庫形式?a和.fra...