本文主要是介绍Android 调用第三方so中方法记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:公司其他部门提供了一些c语言写的方法 用ndk封装成了 so文件 我们Android上层app需要调用
开始:
第一步:拷贝so文件到AS工程
这里注意 如果你是放在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("传入参数")
这里说一个注意问题,就是第三方给你提供的so如果没有包路径,那就按照这套步骤无法集成了,因为你不知道把java文件放哪里,此时 应该让对方提供一个带包路径(package)的java文件,如何做到呢?
就是对方在第一步写java文件的时候 先在本地盘里面创建一个目录 这个目录就是包路径 比如创建stl文件夹 再在文件夹里面创建 star*** 文件夹 然后目录创建好后 在里面创建***MultiClient.java文件
然后javac编译成 class 然后 javah编译出来 .h文件 然后.c去实现 然后ndk编译成 so
这篇关于Android 调用第三方so中方法记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!