第三方开源代码(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

原文地址:https://www.cnblogs.com/angelshelter/p/13702923.html