一、庫格式:
庫格式?jīng)Q定庫獨(dú)立性续语、庫內(nèi)文件類型垂谢、庫內(nèi)外文件依賴關(guān)系
- Static Library:(
靜態(tài)
性質(zhì) 或動(dòng)態(tài)非共享
性質(zhì) 或動(dòng)態(tài)共享
性質(zhì)) - Framework(
靜態(tài)
性質(zhì) 或動(dòng)態(tài)非共享
性質(zhì) 或動(dòng)態(tài)共享
性質(zhì)) - Metal Library
二、庫性質(zhì)(由mach -O Type決定):簡(jiǎn)單總結(jié)為
庫性質(zhì)決定庫加載到運(yùn)行時(shí)內(nèi)存的時(shí)機(jī)疮茄、加載的庫范圍滥朱、庫的共享權(quán)限
靜態(tài)庫
動(dòng)態(tài)非共享庫
動(dòng)態(tài)共享庫
mach -O Type:一種文件格式,Mach Object文件格式力试,是Mac上的可執(zhí)行文件類型 或者 目標(biāo)文件(.o)徙邻。
以開發(fā)者制作三方庫的場(chǎng)景為例解釋:
Executable: `靜態(tài)庫`,輸出二進(jìn)制
Dynamic Library:`動(dòng)態(tài)非共享庫`畸裳,輸出動(dòng)態(tài)鏈接庫非共享庫缰犁,程序`運(yùn)行`時(shí)鏈接到`內(nèi)存,大部分場(chǎng)景下不可共享怖糊;app extension帅容、部分macOS場(chǎng)景下可以共享
Bundle:`動(dòng)態(tài)非共享庫`,和Dynamic Library相近蓬抄,不過需要手動(dòng)調(diào)用函數(shù)加載
Static Library: `靜態(tài)庫`丰嘉,輸出靜態(tài)鏈接庫,程序`編譯`時(shí)拷貝到`內(nèi)存`
Relocatable Object File:`靜態(tài)庫`嚷缭,和Static Library類似,但體積更小
三耍贾、從結(jié)構(gòu)上看阅爽,Framework格式的庫
只是比Static Library格式的庫
多出一個(gè)文件夾,擁有一個(gè)獨(dú)立的工作區(qū)
四荐开、Framework格式的庫
中嵌入的依賴庫可以和app環(huán)境的依賴庫相同付翁,并且不會(huì)產(chǎn)生duplicate symbol,因?yàn)镕ramework有獨(dú)立的運(yùn)行環(huán)境
五晃听、Static Library格式的庫
中的依賴庫和app環(huán)境依賴庫相同時(shí)會(huì)有依賴沖突
六百侧、Static Library格式的庫
的依賴的方法可以不實(shí)現(xiàn)砰识,但Framework格式的庫
依賴的方法必須實(shí)現(xiàn)(objc)
七、Static Library格式的庫
不可包含圖片等資源文件
八佣渴、Static Library格式的庫
的庫在打包時(shí)會(huì)直接編譯進(jìn)app的二進(jìn)制執(zhí)行文件辫狼,Framework格式的庫
被打包進(jìn)沙盒;如果觀察過Product包內(nèi)容時(shí)會(huì)發(fā)現(xiàn)使用<Static Library格式的庫
>或者<Framework格式的庫且(mach -O Type = Static Library)
>不會(huì)出現(xiàn)在Frameworks文件夾中辛润,是因?yàn)榫幾g進(jìn)了app的二進(jìn)制執(zhí)行文件
九膨处、開發(fā)者簽名的Dynamic Library
性質(zhì)的庫時(shí)在app extension中共享或者在macOS部分場(chǎng)景下共享;蘋果官方的動(dòng)態(tài)庫
有共享權(quán)限
十砂竖、制作三方庫在考慮Static Library格式的庫
庫或者Framework格式的庫
時(shí):依賴圖片資源真椿,使用Framework格式的庫
;想要擁有完整的依賴關(guān)系乎澄,使用Framework格式的庫
,此時(shí)外界可能需要剔除Framework格式的庫
之外的依賴庫突硝,而采用Framework格式的庫
內(nèi)的依賴庫,否則雖然不會(huì)產(chǎn)生依賴沖突置济,但會(huì)增加包大小
十一狞换、制作三方庫時(shí),建議選擇:
- 庫格式:
Framework
舟肉, - 庫性質(zhì)(mach -O Type ):
Static Library(mach -O Type)
或者Relocatable Object File
修噪,會(huì)天然處理嵌套等問題
十二、Framework圖標(biāo)
Framework內(nèi)不嵌套Framework時(shí):Framework中嵌套Framework時(shí):