一、簡(jiǎn)介
靜態(tài)庫和動(dòng)態(tài)庫的存在形式
1.靜態(tài)庫:.a 和 framework
2.動(dòng)態(tài)庫: .dylib、.tdb 和 .framework
靜態(tài)庫和動(dòng)態(tài)庫在使用上的區(qū)別
靜態(tài)庫:鏈接時(shí),靜態(tài)庫會(huì)被完整地復(fù)制到可執(zhí)行文件中, 被多次使用就有多份冗余拷貝
動(dòng)態(tài)庫:鏈接時(shí)不復(fù)制,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次,多個(gè)程序共用,節(jié)省內(nèi)存。
注意:項(xiàng)目中如果使用了自制的動(dòng)態(tài)庫,不能被上傳到 AppStore!
了解設(shè)備的架構(gòu)
iPhone4s-iPnone5:i386
iPhone5s-iPhone7 Plus:x86_64
真機(jī):
iPhone3gs-iPhone4s:armv7
iPhone5-iPhone5c:armv7s
iPhone5s-iPhone7 Plus:arm64
支持armv7的靜態(tài)庫可以在armv7s上正常運(yùn)行(armv7 兼容armv7s)
常用終端命令
// 查看靜態(tài)庫支持的CPU架構(gòu)
# lipo -info 靜態(tài)庫路徑
lipo -info libname.a(或者libname.framework/libname)
// 合并靜態(tài)庫
# lipo -create 靜態(tài)庫存放路徑1 靜態(tài)庫存放路徑2 ... -output 整合后存放的路徑
lipo -create libname-armv7.a libname-armv7s.a libname-i386.a -output libname.a
// 靜態(tài)庫拆分
# lipo 靜態(tài)庫源文件路徑 -thin CPU架構(gòu)名稱 -output 拆分后文件存放路徑
# 架構(gòu)名為armv7/armv7s/arm64等,與lipo -info 輸出的架構(gòu)名一致
lipo libname.a -thin armv7 -output libname-armv7.a