本文主要讲述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

更多相关文章

  1. android编译步骤
  2. Android:CourseTableLayout — 好用的Android自动生成课程表的自
  3. Android生成keystore是报错拒绝访问
  4. android 创建动态创建菜单(钩子)
  5. android截屏代码:C++实现
  6. Quick_Cocos2d_x V3.3 Protobuf Android
  7. 2012.08.23——— android ndk 编译多个so
  8. Android(安卓)6.0权限动态获取
  9. NDK编译Android动态链接库

随机推荐

  1. 通过查看系统的ProgressBar样式来自定义
  2. Unity出现 error building player except
  3. 如何掌握Android-Camera模块
  4. ListView中点击事件无法响应
  5. Android 模拟器上安装APK步骤
  6. android:configChanges的用法
  7. Android代码内存优化建议-OnTrimMemory优
  8. Android(安卓)Studio Error -- Could not
  9. android 开发过程中遇到问题
  10. TextView属性