第三方開源代碼(C)生成安卓動態鏈接庫so

2020-09-20

百度查Linux的動庫庫文件so可以給安卓使用嗎?

網上好多說可以。

後來一想,應該是不可以吧,安卓手機cup架構不同,要針對不同的生成不同架構的包,所以還才混合編譯,纔有armeabi、armeabi-v7a、arm64-v8a這樣不同架構下的so文件。

切回正題:

這次以ghttp爲例子:

鏈接:https://pan.baidu.com/s/1L-4zgm78r7YWs-wFpTLAow
提取碼:c20b

這裏我跳過了ndk安裝過程,沒有ndk環境的,自己網上搜怎麼安裝。

下載源碼,放到linux服務器上:解壓,

把libghttp-1.0.9改名爲jni, 如果不改,會說找不到工程:

[root@izwz9eo2whsnfgi4ccyqouz libghttp-1.0.9]# ndk-build
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
/usr/bin2/android-ndk-r16/build/core/build-local.mk:151: *** Android NDK: Aborting . Stop.

拷貝Android.mk和Application.mk到jni目錄下

鏈接:https://pan.baidu.com/s/1vFhpeU1DwPzTkr_BA6ZF9g
提取碼:whdu

文件基本不用改動,唯一有改的就是動態庫名:

 

 改好後,保存。

在jni目錄下,執行ndk-build就成功了。

在它的父級目錄裏會生成libs和obj兩個目錄。動態庫so文件就是在libs裏面。

可以用nm -D xxxx.so查看裏面的方法。這個命令很實用。之前我就是打包成功,以爲成功了,用這個看看,裏面沒幾個方法,說明失敗了。真正成功,裏面應該有共享方法纔對。

 最後,我把打好的包,分享出來吧,可以直接用

鏈接:https://pan.baidu.com/s/1KOowSqjMVhAS75Q55_IvJA
提取碼:36yp

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章