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