背景:公司其他部门提供了一些c语言写的方法  用ndk封装成了 so文件  我们Android上层app需要调用

 

开始:

第一步:拷贝so文件到AS工程

Android 调用第三方so中方法记录_第1张图片

这里注意 如果你是放在module的 libs下 还要在module的build.gradle中  android{}里面加上这个配置

sourceSets {        main {            ...            jniLibs.srcDirs = ['libs']        }    }

第二步:关键步骤

创建一个和so内部包路径相同的package  比如我这里是stl.star***s 然后 把第三方提供的java文件放进去

这里说的so内部包路径就是第三方提供的这个java文件 第一行代码  package ***

还有一个办法可以看到包路径,就是跟对方要到 .h文件 

这个.h文件中 最上面 找到类似      #ifndef _Included_stl_star***_***MultiClient,这里的stl、star***拼起来 stl.star*** 就是包路径了   后面的***MultiClient 就是java类名

 

如果对方没有给你提供java文件(应该提供的,总得提供接口文档吧)就把接口文档中的方法写在  你建的java类里面 如下图的

public static native 方法

然后在用的地方  直接调用就可以了  ***MultiClient.xxxInit("传入参数")

 

Android 调用第三方so中方法记录_第2张图片

 

这里说一个注意问题,就是第三方给你提供的so如果没有包路径,那就按照这套步骤无法集成了,因为你不知道把java文件放哪里,此时 应该让对方提供一个带包路径(package)的java文件,如何做到呢?

就是对方在第一步写java文件的时候  先在本地盘里面创建一个目录 这个目录就是包路径  比如创建stl文件夹 再在文件夹里面创建 star*** 文件夹 然后目录创建好后 在里面创建***MultiClient.java文件

然后javac编译成 class 然后 javah编译出来 .h文件  然后.c去实现  然后ndk编译成  so

 

更多相关文章

  1. Android图像格式类及图像转换方法
  2. 不同Android版本设备正确获取屏幕分辨率的通用方法
  3. :Handler方法小结(在线程中更新UI和了解HandlerThread类的用法)
  4. Android中数据存储——文件存储数据
  5. 深入探究Android的WebView下载网络文件的盗链问题
  6. Android ListView动画实现方法
  7. ADB连接Android设备的三种方法

随机推荐

  1. Android知识梳理:进程间通信
  2. android项目高级UI学习
  3. Android build.prop配置 定义一些宏定义
  4. 安装本机 sdcard
  5. Android 控件背景图片和imagebutton的使
  6. android极简原创系列:tabhost最简单配置
  7. myeclipse8.5+win7 配置android 开发环境
  8. Android Studio介绍
  9. Android沉浸式状态栏以及浅色模式开发
  10. Failed to install ***.apk on device 解