前言
在之前JNI中,我已经艰难的实现了jni生成so文件,然后也学习了Android项目中引入so库使用 的两种方式。无奈学习的引入so库方式均是引入 so+jar 方式(一般我们在引用第三方的so库时都会包含一个jar包),而我手头就一个so文件,并无jar包,顿时陷入沉思
今天要涉及到的知识:
如何在没有jar包加持的情况下(即你只有so文件,但是没有jar包)调用so库中的方法。
- 前置
- so文件内容分析
- 写java nativate 方法
- MainActivity中调用so库
一. 前置
一般我们在开发使用第三方库的时候,会包含一套 so
文件+jar
包。但是由于我只生成了一套so
文件,类似下面这样:
那目前我就只有
so
文件,没有jar
包怎么办?首先我们要知道,
so
文件和jar
包里面是啥。一般而言:
-
so
文件:c/c++
库方法 -
jar包
:java的native方法
即一般我们是通过jar
包中的native方法来实现 Java 调用 c/c++ 动态库的。
那么这里,我只有so
库文件,而没有jar
包。那我们在使用so
库的时候,就需要自己实现jar
包的功能。
所以。这里就有个前提,那就是你对你的so库中的内容十分熟悉
二. so
文件内容分析
so
文件内容由cpp
文件内容而来,让我们看看cpp
文件内容:
Java_com_myjni_JniTest_getName(JNIEnv *env,jobject instance)
ok,在它的方法名中我们可以看到JniTest
类全路径为: