最近在與第三方支付平台對接的時候,接過來的文件demo裡含有.a靜態庫檔案,但是因為庫包出錯,需要修改,才發現.a靜態庫檔案不可修改,所以上網進行了了解學習。
現在跟大家分享一下學習的心得。
framework
檔案和.a
檔案都是庫檔案
, 那什麼是庫檔案
? 庫是程式**的集合,是共享程式**的一種方式
. 根據源**的公開情況,庫可以分為
2 種型別.
開源庫: 公開源**,能看到具體實現 比如
sdwebimage
、afnetworking
閉源庫:
不公開源**,是經過編譯後的二進位制檔案,看不到具體實現
主要分為:靜態庫、動態庫
靜態庫和動態庫
靜態庫和動態庫的存在形式
靜態庫:
.a 和
.framework
動態庫:
.dylib
和.framework
靜態庫和動態庫在使用上的區別
靜態庫:鏈結時,靜態庫會被完整地複製到可執行檔案中,
被多次使用就有多份冗餘拷貝
(左圖所示)
動態庫:鏈結時不複製,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只載入一次,多個程式共用,節省記憶體
(右圖所示)
需要注意的是:
專案中如果使用了自製的動態庫,不能被上傳到
製作.a
新建專案
->
選擇「cocoa touch static library」
新增庫需要包含的源**
將李明杰老師的重新整理框架
mjrefresh
拖入工程
選擇需要暴露出來的
.h 檔案,
.m 檔案會自動編譯到
.a 檔案中
選擇真機裝置,然後
command+b
編譯,libmjrefresh.a
檔案從紅色變為黑色
選擇模擬器,依然
command+b
,模擬器和真機環境下用的
.a 檔案是分開的
「show in finder」
,檢視製作好的
.a 檔案
如果想讓乙個.a檔案能同時用在真機和模擬器上,需要進行合併
在終端輸入指令
lipo -create debug-iphoneos/libmjrefresh.a debug-iphonesimulator/libmjrefresh.a -output libmjrefresh.a
.a 檔案的體積(一般情況下) 通過
lipo –info libmjrefresh.a
可以檢視
.a 的型別(模擬器還是真機)
使用.a
如何使用.a
直接將.a
、.h
、資源檔案拖拽到其他專案中即可
iOS開發之靜態庫的製作
當你需要和別人分享 但又不想讓別人看到你內部的實現時就需要製作靜態庫,通常用於第三方sdk 下面就分享一下製作靜態庫 a 的過程 1 開啟xcode,新建workspace 2 隨便給workspace取個名字 3 在workspace新建工程 4 選擇靜態庫 5 點選下一步 6 刪除系統自動幫你生...
ios開發靜態庫生成
首先簡單說下哈 庫就是程式 的集合,是共享 的一種方式 分為開源庫 sd,mi,afn 和閉源庫 看不到具體實現的 閉源庫分為靜態庫和動態庫 靜態庫 a 和 framework 動態庫 dylib 和 framework 靜態庫 鏈結時,靜態庫會被完整地複製到可執行檔案中,被多次使用就有多份冗餘拷貝...
iOS開發之靜態庫 a的製作教程
簡介 什麼是庫?庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 開源庫公開源 能看到具體實現 比如 sdwebimage afnetworking 閉源庫不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫和動態庫 靜態庫和動態...