引言

隨著項目中動態(tài)鏈接庫越來越多,我們也遇到了很多奇怪的問題,比如只在某一種 OS 上會出現(xiàn)的 java.lang.UnsatisfiedLinkError,但是明明我們動態(tài)庫名稱沒錯,ABI 也沒錯,方法也能對應(yīng)的上,而且還只出現(xiàn)在某一些機型上,搞的我們百思不得其解。為了找到出現(xiàn)千奇百怪問題的原因,和能夠提供一個方式來解決一些比較奇怪的動態(tài)庫加載的問題,我發(fā)現(xiàn)了解一下 so 的加載流程是非常有必要的了,便于我們發(fā)現(xiàn)問題和解決問題,這就是本文的由來。

要想了解動態(tài)鏈接庫是如何加載的,首先是查看動態(tài)鏈接庫是怎么加載的,從我們?nèi)粘U{(diào)用的 System.loadLibrary 開始。

為了書寫方便,后文中會用“so”來簡單替代“動態(tài)鏈接庫”概念。

1、動態(tài)鏈接庫的加載流程

網(wǎng)友評論