Android NDK 引入預編譯庫的方法

2021-06-28 16:21:33 字數 1270 閱讀 8298

1. 無關緊要的話

2. 解決辦法

編寫android.mk檔案,讓ndk在build的時候去找第三方庫,把它拷到libs/armeabi目錄下。

網上找了一通,發現好些博文都說在jni目錄下新建prebuilt目錄,再把第三方庫拷進prebuilt目錄下,並且在prebuilt目錄下新建並編寫android.mk,而後再jni目錄下引用prebuilt裡的庫……云云。照著搗鼓了一番,還是——臣妾做不到啊!!

不過有些博文指出,ndk的官方文件有這方面指南,就在ndk目錄的docs子目錄下。我的ndk版本(android-ndk-r10d)裡,prebuilt libraries這一章節在./docs/programmers_guide/html/md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html這裡。

有了官方文件的解釋,基本也就清楚了。以libbaidumapsdk.so庫為例,首先在jni目錄下新建乙個prebuilt資料夾(名字任取),然後把第三方庫拷進去。接下來開啟在jni 目錄下的android.mk檔案,宣告預編譯庫模組:

include $(clear_vars)

local_module := baidumapsdk #模組名稱

local_src_files := prebuilt/libbaidumapsdk.so #注意加prebuilt/,這樣才能找到libbaidumapsdk.so

include $(prebuilt_shared_library)

引用baidumapsdk模組:

local_shared_libraries := liblog libcutils \

baidumapsdk #就是上邊宣告的那個模組

這樣ndk-build完之後,你就可以在libs/armeabi下看到libbaidumapsdk.so了:d

3. 後話

android專案使用外部.so - prebuild library on android

android開發---ndk-build不自動刪除外部庫 

關於android ndk中呼叫第三方的動態庫

Android NDK 交叉編譯

2,根據ndk裡docs文件裡的standalone toolchain.html來抽取交叉編譯的環境。3,配置sysroot環境變數 sysroot ndk platforms android 8 arch arm android 8是你的android開發版本所定 4,然後執行命令 ndk bu...

Android NDK編譯過程

最近在利用sse指令集完成beautyshot的x86架構的移植,工程在vs下優化完成後,需要對其在android ndk中進行編譯獲得庫檔案後,才能在終端裝置上執行,因為自己以前沒有從來沒有接觸過android相關的內容,所以感覺上手起來比較艱難,所幸有同事幫助,終於能夠利用android ndk...

JS預編譯 函式預編譯和全域性預編譯

預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...