初识JNI开发

      最近接到一个任务,叫我将项目上的压缩图片的方法优化一下。我就吭哧吭哧的找,找了几个开源库,发现效果也就那样,最后发现有个方法是调用jni来进行压缩,就这样我开始了的第一行JNI代码。

---------------------------------------------------------------------------------------------------------------------------

      说实话,JNI的开发资料很乱,我也是找了几个晚上的资料之后才写出了类似的代码,接这个机会我在这里分享一下。

---------------------------------------------------------------------------------------------------------------------------

开发环境:

AndroidStudio 3.2.1 

NDK 16(一开始我通过AS下载下来的是17.+的版本,后面遇到了一些问题我调整成了16,什么问题我后面会提出来)

WIn10

---------------------------------------------------------------------------------------------------------------------------

第零步 配置

打开sdkManager下载CMake和LLDB

配置ndk的环境

把红框中的路径,加到环境变量中

 

第一步 创建项目

这里要把  支持C++功能打开,接下来无脑next/finish,这个时候我们就可以得到一个系统默认的工程,这个工程里已经有了一个默认的jni的实现,这个很有助于我们开发,建议可以先看一哈~

最直观的来讲,从项目的结构上来讲主要多了这两个东西

 

第二步 创建我自己的native方法

 

第三步 生成对应的C++文件

我当时主要的事件都耗在这里了,因为开发工具/开发工具版本的不同,所以网上有很多方法,我这里选取了一个最最简单的方法(无需命令行)

配置 Anroid Studio 外部工具,一劳永逸,往后无需命令行,File->Setting->Tools->External Tools->“+”进入页面

按图配置好就成,其中三个最麻烦的在下面

Program:$JDKPath$\bin\javah.exe

Parameters:-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$

Working directory:$ModuleFileDir$\src\main\Java
 

配置好这个工具之后,对native所在的方法,执行这个tool

执行完成之后,多了一个文件夹,文件夹中也会多一个.h文件

同目录下新建一个.cpp文件,然后我们把.h里面的内容copy到新建的文件里面(具体可以参照as自带的.cpp的文件)

 

第四步 配置对应的CMakeLists文件

几年前,我们还需要做JniLib.cpp 、Android.mk、Application.mk的配置,现在我们只需要对CMakeLists文件配置一下就可以了

还是那样模仿as生成的CMakeLists模板内容,差不多写一份就行了

 

第五步 调用native方法

注意libname 不要写错

 

第六步 调用我们写的native方法(getString)

 

最后运行得到程序

 

---------------------------------------------------------------------------------------------------------------------------

如果想得到这个工程对应的so包的话,可以通过以下路径获取

这些文件都会在rebuild成功之后出现。

 

最后来解答以下为什么用ndk16。

在ndk17+之后,我们无法通过这种方法生成armeabi的so包,只能生成上图所示的这些包,这会与我们开发过程中相冲突,所以我这里选用了16的版本

 

输出指定格式的so包

这时候重新rebuild一下,我们可以看到

 

---------------------------------------------------------------------------------------------------------------------------

接触jni没多久,望大神轻喷

demo: https://download.csdn.net/download/just_hu/11111799

参考链接

https://blog.csdn.net/ziyoutiankoong/article/details/79696279

https://blog.csdn.net/mayohn/article/details/82152360#新建项目

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值