Ndk(jni)调用第三方的so库
16lz
2021-12-04
本文主要讲述android如何在jni中调用第三方共享so
项目源码地址:https://github.com/chenjim/thirdPartyJniSo
本博客地址:http://blog.csdn.net/csqingchen/article/details/51548839
android studio 中如何使用,参见本项目thirdPartyJniSoAS目录的studio工程
如何使用
- 生成第三方共享.so库
命令行切换到thirdPartyJniSo/prebuild/
目录下
执行ndk-build
,会在当前目录生成共享库文件libs/armeabi-v7a/libadd_test.so
; - 生成HelloJni.java需要的.so库
复制以上生成的.so到thirdPartyJniSo/jni
下,命令行切换到该目录,
执行ndk-build
- eclipse导入工程,导入时不需要勾选thirdPartyJniSoAS,运行…
- hello-jni.c中对共享库中函数add_fun的调用,可以将返回结果在其中进一步封装,返回给HelloJni.java使用。
注意问题
- gcc 生成的共享动态库,android无法使用,必须用ndk编译生成的.so,否则提示”.so: File format not recognized”。
- 项目中两处Application.mk 中APP_ABI的配置必须相同,否则提示”.so: File format not recognized”。
- 最终调用的libhello-jni.so也是动态共享库,为啥不直接用步骤1生成的动态库的
libadd_test.so
?是因为HelloJni.java不识别非ndk标准的动态库格式。
参考文章:
http://blog.csdn.net/educast/article/details/12773127/
http://tools.android.com/tech-docs/new-build-system/gradle-experimental
https://github.com/googlesamples/android-ndk/tree/master/hello-libs
更多相关文章
- android 上调试动态库方法
- 一步一步学习androidNDK编程(java给c传递数据)
- Android(安卓)NDK入门之Hello Jni
- android 上调试动态库方法
- Android(安卓)应用程序之间数据共享—ContentProvider
- 2011.09.21——— android 动态壁纸开发
- 在android studio 2.1 实现简单的ndk
- 2011.09.21——— android 动态壁纸开发
- android下不规则多边形填充位图