如何使用
Use Guidelines
這是apple給出的官方使用說明,結合第一行的描述
Dynamic libraries can be loaded either when the app launches or as it runs. Libraries that are loaded at launch time are called dependent libraries. Libraries that are loaded at runtime are called dynamically loaded libraries.
由此,現(xiàn)在有兩種load的方式,第一種作為依賴load,這樣的話是在運行之前就配置好的,相當于全局的load。
其次是動態(tài)的load,在動態(tài)load時,是一個runtime的使用方式,也就是說在具體的code里面需要自己反射lib里面的方法,通過dlopen等api來加載lib,調用方法。
具體的參考Use Guidelines
不過,一般我們都會優(yōu)先考慮使用全局的方式load,那么此時如何讓項目自動load?
- 在build phase里進行copy 動作,將我么需要的lib文件copy到響應的目錄下,如framework
- 在最終build出來的執(zhí)行文件,使用otool查看lib的加載信息,然后使用install name tool來修改具體的加載路徑
這里可以參考stackoverflow的具體問題,最佳答案有詳細步驟 - 需要注意的是,在現(xiàn)在使用了instal name tool之后,這個項目中的這個install后的相關lib屬性就已經保存到了項目生成的binary文件中,無論copy到何處都是保留了這個配置信息的
- 在具體問題中我們看到了類似,@executable_path的寫法,這是系統(tǒng)保留的動態(tài)獲取路徑的方法,詳細使用可以參考動態(tài)路徑,其中涉及
- @rpath
- @loader_path
- @executable_path
他們的具體含義,用到的繼續(xù)學習吧
PS:
在本次項目調試中發(fā)現(xiàn),直接使用xcode的run,那么xcode會自動將引入的全局加載方式的lib文件install到當前product所在的目錄,與生成的product平級。從而只要我們在build phase copy這個lib文件到product directory,