如何在Windows环境下进行jni开发--NDK环境配置

ndk编程(native developer kit),关于jni(java native interface)这方面的使用,其实早在2014年的时候,就研究过这方面的知识,只是当时工作上用不到所以就没对这方面进行一个汇总! 近期由于个人维护Android平台中间件要涉及到这方面的知识,那么今天将结合个人工作对这部分知识体系进行一个总结,个人工作上的有关jni编写是基于Linux系统平台下的,这个比在Windows下进行NDK开发更加方便简捷。

环境搭建

首先再搭建Windows下的NDK开发环境时,先回顾一些重要的知识点:

NDK开发, 简单点理解 , 其实就是用我们的C/C++编写一个本地库函数供java调用或者回调java端的接口,去做一个java端无法做的事! 实现跨一个平台操作

我们的java,或者C/C++,由写代码到可运行的软件或者函数库时需要经过两个步骤:
1 编译阶段
2 连接阶段

Java文件编译阶段之后生成 .class文件 ,连接阶段的工作交由java的虚拟机处理完成
如果虚拟机是在Windows下,则会去模拟一个Windows环境去解析完成java编译阶段之后的字节码.class文件
如果虚拟机是在Linux下,则会去模拟一个Linux环境去解析完成java编译阶段之后的字节码文件

C代码跟java代码有所差异,在C文件编译阶段之后生成 .0中间文件,在Windows下连接生成.exe文件,linux下生成.elf文件

.exe是windows下可执行文件
.elf是linux下可执行文件

windows下C语言打包成的函数库.dll
linux下C语言打包成的函数库.so动态库或者静态库.a .ko等多种方式

众所周知,我们我们Android底层用的操作系统就是Linux操作系统,其实Linux就是C,那么由于厂商不同,那么定制方式就会不同,对应的一些C代码还是有区别的,手机底层Linux操作系统有些是基于arm处理器cpu(这个目前是主流cpu) ,有些就会是基于x86处理器cpu(例如联想手)但是这类处理器兼容性差有些软件可能会跑不起来

那么问题来了!我们需要在windows下的环境 把我们的c代码打包成 手机能用的函数库 .so 而不是.dll 该怎么办?那么我们可以在Windows下去模拟一个Linux环境出来,这边需要用到几个辅助工具:

android-ndk-r8c点击下载

工具点击下载

1、NDK (去Google官网下载最新的NDK) 解压到系统某个盘符下,但是路径不要有中文 (我们要在Windows下进行NDK开发就必须要有自己配置的ndk环境)

这里写图片描述

下载下来是上面这个样子,个人这边目前用的是r8这个版本,目录介绍:
build—编译目录(里面存放很多Linux下的.sh批处理文件,.sh是linux下的批处理文件,也称shell脚本,如果对这方面还不是熟悉的同学请移步至 Linux shell 脚本编写 作个简单的理解,.bat是windows下的批处理文件。由于ndk有很多linux的批处理文件,所以最早的NDK开发是基于linux平台系统下开发的(国外Windows系统收费,在中国特殊国情)国外多数NDK开发是基于这个Linux下开发 )
samples—案例demo
docs—开发文档参考
test—测试目录
platforms—平台 一般基于8版本开发 这个版本是比较稳定的版本

这里写图片描述

这里写图片描述

ndk环境变量配置(需要配置两处),以下是博主个人的环境变量配置:
这里写图片描述

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;E:\eclipse_adt_bundlece\sdk\platform-tools;F:\Git\Git\cmd;F:\svn\bin;F:\QuickTime Alternative\QTSystem;D:\Program Files (x86)\Java\jdk1.7.0_79\bin;C:\MinGW\bin;E:\android-ndk-r8c

这里写图片描述

NDK_HOME
E:\android-ndk-r8c

在命令行输入ndk-build弹出下面的信息说明配置无误:

这里写图片描述

2、 cygdriver 模拟linux系统环境

由于在Windows下进行ndk开发,执行ndk指令以及打包出来的函数库会出现一些问题,所以我们还需要另外一个工具去模拟Linux环境,下面说一下这个工具的安装使用:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

还有一点要注意的是:安装时我们只需要添加以下两项包数据为install就可以了
devel install 和 shell install

这里写图片描述

安装成功之后,会在桌面上出现这么一个图标;
这里写图片描述

linux会把所有设备都生成了一个文件,我们在这个工具中cd到根目录看看这个模拟Linux环境的文件目录跟我们手机上的差异:

这里写图片描述

这里写图片描述

从上来面来看,模拟的跟真实手机上的多少来说有一点差异,手机上的Linux文件目录结构要比模拟的要多那么些文件,另外这个模拟的Linux环境文件结构跟这个工具安装时关联的本地文件里的文件结构是一样的。

3、cdt(c/c++ developer tools)
为了方便在eclipse或者其它开发工具中开发c/c++代码, 让c/c++代码高亮显示我要用到这个cdt插件,如果你的C/C++用得相当得纯熟,这个工具是多余的!这边以安装到eclipse为例:

打开eclipse的顶部菜单栏help->install new software执行以下操作即可:

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013171283/article/details/79240514