JNI(四)—项目中直接引用so文件

前言

在之前JNI中,我已经艰难的实现了jni生成so文件,然后也学习了Android项目中引入so库使用 的两种方式。无奈学习的引入so库方式均是引入 so+jar 方式(一般我们在引用第三方的so库时都会包含一个jar包),而我手头就一个so文件,并无jar包,顿时陷入沉思

今天要涉及到的知识:
如何在没有jar包加持的情况下(即你只有so文件,但是没有jar包)调用so库中的方法。

  1. 前置
  2. so文件内容分析
  3. 写java nativate 方法
  4. MainActivity中调用so库

一. 前置

一般我们在开发使用第三方库的时候,会包含一套 so文件+jar包。但是由于我只生成了一套so文件,类似下面这样:

JNI(四)—项目中直接引用so文件_第1张图片
image.png

那目前我就只有 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类全路径为:

你可能感兴趣的:(JNI(四)—项目中直接引用so文件)