如何在android sotudio中导入JNI生成的.so库

现在已经有更好的方式去写NDK项目请移步:

  
  

  
然后每次编译就会自动拷贝过去了,记得把前面的:

配置好JNI后我们来新建一个简单的demo实现so库的生成和调用。

我们先新建一个demo

完成后就进入android sotdio的编码界面了。然后右键appnew一个jni的文件夹。

直接点Finish这个时候  这个JNI文件夹就出来叻。如下图:

接下来我们需要在mainActivity中新建一个类用来衔接Java和C语言。如下图

在弹出的对话框中声明我们要新建的类名

到这里我们才完成一半的工作。

我们找到我们刚才添加的类在右边写上下面的代码。

1 用来加载我们生辰的so库

2 我们随便写的一个用来测试的函数。

这个时候會提示我们GBK不认识那么我们设置一下UTF-8就好了。

注意一定不要点开黄色的两个箭头添加会出错。

这个时候打开jni文件夹能看到我们添加的頭文件

接下来我们找到这个头文件的存储目录,并添加三个文件如下图:

然后再这三个文件中添加源码。

# 下面一句是用来指定so库生成位置的感兴趣的朋友可以试试,确实可以改变so库生成位置

到这里jni设置差不多就完成了,我们现在需要用ndk-build来编译一下我们刚才设置的jni苼成so库。如下图

这个时候可以发现main目录下面多了libs和obj。

下图红框就是我们生成的so库

做到这里我们编译一下,发现没有错误接着往下走。

4 让tv 指向我们上一步设置的TW句柄

5 把我们用jni设置的返回字符串在tv指向的TextView中显示出来。

这个时候编译可以过但是app不能正常运行

因为还有一個地方要设置:

在build.gradle中加入上图中红框的内容。屏蔽默认的库调用路径使用我们刚生成的so库的调用路径。

为了设置so库调用路径

最后设置荿功,点击run.

app在我们的RK3288上面跑起来效果如下图:

我要回帖

更多关于 android so 的文章

 

随机推荐