NDK

Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。

下载地址:https://developer.android.google.cn/ndk/downloads/index.html

截图中是最新版本

如果需要下载历史版本,点击 Revision History

NDK:android-ndk-r14b-windows-x86_64.zip

解压生成:android-ndk-r14b文件夹

windows-Preferences-Android-NDK

NDK Location 设置路径

选择ndk目录时提示“Not a valid NDK directory”, 在你安装的ndk的主目录下创建一个ndk-build空文件,然后重新打开对话框选择就可以了。

简单JNI调用

1、创建一个Android工程,名为firstjni;

2、在com.example.firstjni包下新建一个Jni接口类FirstInterface,这个类不需要继承java的接口类;

3、编译这个接口类,为c端调用的头文件。

工程目录:

命令窗口:运行cmd,cd进入到eclipse工作空间中firstjni工程目录,
输入javah-classpath bin/classes -d jni com.example.firstjni.FirstInterface编译接口类

编译完成后,刷新工程,就可以看到工程中自动创建了jni文件夹,其中包含编译好的.h头文件

4, 右键firstni工程选择Androidtools下Add Native Support选项,library name使用默认的工程名;

完成后,会在jni文件夹中添加一个Android.mk文件和firstjni.cpp文件;

5、然后给工程新建并配置一个Builder,能够自动生成so库在Android端代码进行调用。

①右键工程-Properties-Builders-New,在弹出对话框中点击Program。

②在Edit Configuration对话框中的Main选项卡中,添加路径;

Location中选择到NDK安装目录下的ndk-build.cmd;

WorkingDirectory中选择到firstjni工程目录。

点击Browser File System按钮选择。

③选择Refresh选项卡,在其中勾选如下

④在Build Options选项卡中勾选如下

点击上图中SpecifyResource,配置到firstni工程的jni目录即可。

到此点击ok,配置完成了,相比通过命令行编译的方法,至少方便很多。
完成后,会在firstjni工程libs文件下自动创建armeabi文件夹并包含编译好的libfirstni.so库文件,当工程有所改变的时候,就会自动编译so文件;

6、下面来填充firstjni.cpp,相信学过C++的朋友会觉得很熟悉,在这个cpp文件里面写接口的具体实现。

这里会出现JNICALL等类型无法识别等报错,需要导入一个NDK的include头文件库:

①  键工程,选择Properties -> C/C++ General -> Path and Symbols 中点击include选项卡,添加NDK安装目录下的include文件夹E:\android-ndk-r14b\platforms\android-23\arch-arm\usr\include

导入完毕之后就不会报错了。

7、首先将头文件Include进来,但是要遵循方法的命名规则:Java_(固定开头)com_example_firstjni(用"_"连接的包名)_ FirstInterface (类名)_ getHello (函数名) 再从接口.h头文件中把getHello方法复制过来,并修改参数,简单的返回一个字符串。

8、然后修改MainActivity.java代码,添加一个TextView并设置其文本为getHello()方法的返回值;添加static代码块,载入so库,之前右键工程add native Support的library名称就是在这里调用:

运行结果如下:

参考:http://www.aichengxu.com/android/1411740.htm

Android NKD初探相关推荐

  1. 十九、Android Activity初探

    原文:十九.Android Activity初探 Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话.照相.发邮件或者是浏览地图等.每个activity会提供 ...

  2. Android Activity初探

    原地址:Android Activity初探 Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话.照相.发邮件或者是浏览地图等.每个activity会提供一个 ...

  3. android插件框架机制的选择,Android插件开发初探——基础篇

    Android插件开发初探 对于Android的插件化其实已经讨论已久了,但是市面上还没有非常靠谱成熟的插件框架供我们使用.这里我们就尝试性的对比一下Java中,我们使用插件化该是一个怎么样的流程,且 ...

  4. Android资源初探(一) 资源打包

    Android中的资源也是一块比较重要的知识,平时工作中除了简单的使用context.getResouce().getColor(R.id.xxx)之外,我们也更想了解背后的原理.接下来的系列文章从资 ...

  5. Android插件开发初探——分析篇

    承接上文 Android插件开发初探--基础篇 http://blog.csdn.net/yzzst/article/details/45582315 我们通过使用DexClassLoader能够将c ...

  6. Android自动化测试初探

    本文内容:Android自动化测试框架初探 版权声明:本文为原创文章,未经允许不得转载 博客地址:http://blog.csdn.net/kevindgk 初步了解 什么是自动化测试 优点 缺点 前 ...

  7. Android Bitmap 初探

    最近一段时间的开发中和Bitmap接触较多,就Bitmap的使用有了一些新的认识,如何对Bitmap进行压缩,减少内存占用有了一些总结. 背景 社交类(或者说是包含用户系统)的APP基本上都会包含用户 ...

  8. Android Messenger初探

    1. 背景 最近在看任玉刚老师的<Android开发艺术探索>,看到了 Messenger,觉得挺有意思的,写个 Demo 练习一下,同时根据 Messenger 可以延伸到其他知识点,比 ...

  9. Android Go初探

    Android Ore(Go edition) 简介:  Android Go并不是一个独立的操作系统,它只是Android O的一种轻量级配置方案,专为1GB以下内存的机型设计, 在这种设置下,一些 ...

最新文章

  1. Linux那些事儿之我是Sysfs(1)sysfs初探
  2. dedecms首页搜索 添加仿百度下拉框
  3. java项目使用过滤器实例_Java web开发--过滤器篇(详细介绍)
  4. MariaDB Window Functions窗口函数分组取TOP N记录
  5. 编程方法学26:介绍Java标准库
  6. 老生常谈,正确使用memset
  7. Account mobile phone in CRM and C4C
  8. python--*args和**kwargs可变参数
  9. Security Tutorials系列文章第七章:User-Based Authorization(下)
  10. Selenium利用POI读写excel文件
  11. 计算机实数表示法---浮点数(二)
  12. C++基础::文件流
  13. AcWing 786. 第k个数
  14. 动态规划实战16 leetcode-198. House Robber
  15. mysql数据库置疑_SQL数据库置疑 823 824 错误修复 无法附加处理
  16. Rocket-chip-Cache
  17. APS高级计划排程系统的基本原理和排程步骤
  18. 信任危机在蔓延,会不会产生雪崩效应
  19. 什么是软件项目验收,软件项目验收测试方法分享
  20. 使用python依次比较两个pcap文件中的每个报文

热门文章

  1. 球弹跳10次的计算c语言,C/C++编程学习 - 第6周 ⑤ 球弹跳高度的计算
  2. Windows 7之BitLock To Go
  3. 社保、医保、新农合、城镇保险有什么区别?哪个划算?
  4. java.net.UnknownHostException异常处理
  5. NBT|45种单细胞轨迹推断方法比较,110个实际数据集和229个合成数据集
  6. 反知识蒸馏后门攻击:Anti-Distillation Backdoor Attacks: Backdoors Can Really Survive in Knowledge Distillation
  7. 英语字母c的语言教案,[小班英语教案认识字母]幼儿园小班英语教案:字母C.doc...
  8. iOS开发-调用手机浏览器打开网址
  9. A simp task WOJ
  10. 24 利用幵放平台建设网站生态