JNI入门,使用NDK编写自己的SO库

1 篇文章 0 订阅
1 篇文章 0 订阅

很多时候我们开发会使用到第三方的.so文件,这个.so文件是如何生成的呢?当然和NDK有关了,其实NDK开发的一般步骤很简单,只需简单的几步就可完成。

一、和使用JDK开发一样,想要使用NDK开发,首先必须得下载NDK

studio里面可以直接下载ndk
如何下载NDK

下载好了之后在你的local.properties路径配置中自动会加上NDK路径(与SDK的添加路径一样)
local.properties本地配置会自动添加ndk路径

二、在gradle.properties的配置中添加

android.useDeprecatedNdk=true //允许使用过时的NDK
这是解决ndk版本低不能自动编译jni的问题
解决ndk版本低的问题

三、在build.gradle配置中添加

gradle相关配置

四、生成.so文件

1、编写java类和native方法
加载so文件,编写native方法

2、点击Build—>Make Project,生成class文件(在app—>build—>intermediates—>classes—>debug目录下)
找到native的class文件

3、在studio底下菜单中的Terminal命令行中通过javah命令生成.h头文件
命令生成.h头文件
注意:路径只能切换到cd debug目录,不能直接将目录切到项目里面,比如cd xxx/org/hugh/jni,不行!

此时,debug目录下会生成.h文件
生成的.h头文件

4、将.h头文件剪切到新建的jni目录中,在jni目录中新建一个.c或者.cpp文件,生成.so库
新建jni目录
新建jni文件目录

将之前生成的.h文件剪切到jni目录中
将生成的.h文件剪切到此目录中

在jni目录中新建一个.c或者.cpp文件

编写getAuthorName的jni代码

点击Build—>Make Project进行编译,生成.so库文件(路径:app—>build—>intermediates—>ndk—>debug—>lib下)
生成的.so文件
可以将这些.so文件拷贝出来

将含有JniUtil.java的jar拷贝出来,可以给classes.jar重命名(这里也可以通过gradle的task来执行)
将jar包拷贝出来

五、在新建项目中使用.so文件

将生成的.so文件和调用so方法的jar包复制到新项目的lib文件夹中
拷贝生成的.so文件

gradle中配置so库的存放位置
gradle中配置jni使用目录

这样就可以调用了
调用jni

运行结果
调用jni的运行结果

一般调用.so文件的类都会打包成jar包提供出来(比如调用.so文件的JniUtil类),这是因为.so文件中的方法是严格按照包名及类名来命名的。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值