【第22期】观点:IT 行业加班,到底有没有价值?

Ndk(jni)调用第三方的so库

原创 2016年06月02日 18:49:01

本文主要讲述android如何在jni中调用第三方共享so
项目源码地址:https://github.com/chenjim/thirdPartyJniSo
本博客地址:http://blog.csdn.net/csqingchen/article/details/51548839
android studio 中如何使用,参见本项目thirdPartyJniSoAS目录的studio工程

如何使用

  1. 生成第三方共享.so库
    命令行切换到thirdPartyJniSo/prebuild/目录下
    执行ndk-build,会在当前目录生成共享库文件libs/armeabi-v7a/libadd_test.so
  2. 生成HelloJni.java需要的.so库
    复制以上生成的.so到thirdPartyJniSo/jni下,命令行切换到该目录,
    执行ndk-build
  3. eclipse导入工程,导入时不需要勾选thirdPartyJniSoAS,运行…
  4. hello-jni.c中对共享库中函数add_fun的调用,可以将返回结果在其中进一步封装,返回给HelloJni.java使用。

注意问题

  1. gcc 生成的共享动态库,android无法使用,必须用ndk编译生成的.so,否则提示”.so: File format not recognized”。
  2. 项目中两处Application.mk 中APP_ABI的配置必须相同,否则提示”.so: File format not recognized”。
  3. 最终调用的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平台下JNI调用第三方so库

在研究了几天JNI后,在自己生成的so库中调用第三方so库时遇到问题,解决之后特意整理、记录一下。

Android如何调用第三方SO库

问题描述:Android如何调用第三方SO库; 已知条件:SO库为Android版本连接库(*.so文件),并提供了详细的接口说明; 已了解解决方案: 1.将SO文件直接放到libs/armea...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

android-vs Error: file format not recognized

用了数天才解决这个问题,有Debug Debug-V7 Release

file not recognized:file format not recognized

用QT Creator编译 ARM工程时,出现了 file not recognized:file format not recognized such as :../../../qextserial...

Linux g++编译 so文件出错:file not recognized: File trunccated

Linux g++编译 so文件出错:file not recognized: File trunccated

“undefined JNI_GetCreatedJavaVM”和“File format not recognized”错误原因分析

如果编译时,报如下所示错误: ../../third-party/hadoop/lib/libhdfs.a(jni_helper.c.o): In function `getGlobalJNIEnv...

could not read symbols: File format not recognized

arm-linux-gnueabi-readelf工具解决问题编译一个32位平台的内核时,出现如下错误提示:libschw.a: could not read symbols: File format...

编译提示 file not recognized: File truncated

gcc 编译提示 file not recognized: File truncated   我的开发环境是代码在windows上编写,通过文件夹共享,在centos上mount 后编译。 ...

Android 菜鸟历程6

1. Android源码可以编译出android SDK、adb等工具、android文件系统,以及ADT插件,也就是说,我们可以从android源码编译出所有android相关的东西。 2. 获取...

Android Studio NDK开发 正确调用jni 及加入第三方so库需要注意的问题

Android Studio NDK开发 正确调用jni 及加入第三方so库需要注意的问题 首次使用Android Studio进行NDK开发会遇到很多问题, 我在此将自己的经验分享给大家 直接上配...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)