Android开发之JNI 和 NDK编程

 

一、前言

由于各种原因创业失败,最近也加入求职大军当中,虽然市场行情不好但是不要灰心,坚持积累总结加油总会有自己的康庄大道的。好了废话少说,其实在13年开始就接触过相关JNI 和 NDK编程,但是在最近的面试过程中,感觉对这块知识点有点模糊了,不是每个项目都会用到NDK,时间越长也就渐渐模糊了。在这之前其实也做过相关笔记和总结,但是拾起来比较慢,也说不出所以然,所以干脆为了方便说明查阅单独整理写成一篇博文吧!也许这就是写博客的其中一个好处吧。如下图,证明曾经来过,主要还是告诫自己弄过的知识点要及时梳理、多总结、多写博客,在以后的开发当中方能事半功倍啊!

Android开发之JNI 和 NDK编程

Android开发之JNI 和 NDK编程

二、实战讲解

开头我就不讲概念的一些东西了,先把一些项目调用案例实战来一波吧,先知道怎么用。或许这是你项目开发正所需要的?或许你在用的时候就会思考很多为什么了?概念的东西网上很多,下篇文章再对概念进行集中轰炸。。。

1>、NDK环境安装【Eclipse】

1、不用安装Cygwin

Cygwin已过时,Cygwin安装浪费我大量时间。所以:时刻关注新技术、搜索时的关键字非常重要。如:此文档,你应该搜“Android NDK环境搭建2016”(注:2016年的笔记现在2019年来整理,但是Eclipse就是在2016年底就不更新了,所以如果你还用eclipse肯定可以用,现在都用Android Studio你懂得。。。该略过就略过吧!)使用最新ndk,直接抛弃cygwin,以前2013年那会做Android的项目要用到NDK就必须要下载NDK,下载安装Cygwin(模拟Linux环境用的),下载CDT(Eclipse C/C++开发插件),还要配置编译器、环境变量,特别麻烦,新版就不需要了。

2、Eclipse、ADT插件、NDK插件

Android官网下载Android的开发工具ADT(Android Development Tool的缩写),该工具集成了最新的ADT以及Eclipse、NDK,下载一个最新版本SDK,解压之后就可以用了。但NDK有的没有,如下:

查看是否有NDK?

Window-->Preferences-->Android-->NDK(我当时的Eclipse没有NDK选项),

需下载NDK插件( com.android.ide.eclipse.ndk_23.0.2.1259578.jar ),

将文件“com.android.ide.eclipse.ndk_23.0.2.1259578.jar”复制到

sdk 自带的eclipse目录的“plugins”下面,重新启动eclipse,然后查看菜单->Window->Preferences->Android,效果如下:

Android开发之JNI 和 NDK编程

Android官网下载最新的NDK(注:NDK版本在r7以上之后就集成了Cygwin,而且还是十分精简版。)

下载链接见:http://developer.android.com/tools/sdk/ndk/index.html

下载以后,自定义存放路径、解压,然后进行指定【路径不要包含空格和中文】

Android开发之JNI 和 NDK编程

注意点

(1)如果下载的NDK文件不对,会报错。我的报:not a valid ndk directory

(2)选择的NDK位置仅对当前的Eclipse workspace有效哦。如果更改workspace,需要重新指定NDK的位置

3、项目案例讲解1【eclipse】

实践成功,项目地址:D:\yyh_installSoft\androidTools\NDK_Info\code\TestNdkDemo

在NDK文件android-ndk-r10的samples目录下,找个实例运行看看。如:我找到的“hello-jni”

Android开发之JNI 和 NDK编程

1、于是我自己随便新建一个android项目工程TestNDKDemo

2、把jni文件拷贝到项目里面

Android开发之JNI 和 NDK编程

3、这样以后会报错。于是我把MainActivity类替换成hello-jni类,里面内容也都改成hello-jni类里面的内容

   AndroidManifest.xml文件进行相应配置。

4、然后添加原生C文件支持:右击工程Android Tools,Add Native Support… ,Finish

Android开发之JNI 和 NDK编程

然后,直接运行Android项目,自动生成了很多文件以及运行到手机上的效果图

Android开发之JNI 和 NDK编程

 

2>项目实战【Android Studio】

晚上12点太晚了,明天再更新。。。。