1、下载并配置NDK

NDK各版本下载地址在此http://blog.csdn.net/shuzfan/article/details/52690554,对应好各自系统。(压缩文件记得解压)

接下来将NDK存放路径添加到PATH环境变量。

首先打开当前用户的环境变量配置文件(可能文件名略有不同)

vim ~/. bashrc

然后在文件后面添加类似信息: export PATH=/ Android/android-ndk-rl0d: SPATH,其中

Android/android-ndk-rl0d是本地的NDK的存放路径。(这是我下载的版本)

添加完毕后,执行 source ~/ .bashrc来刷新刚刚设置的环境变量。设置完环境变量后,ndk- build命令就可以使用了,这是用来编译产生动态库的。

通过敲击ndk- build命令,没有提示未安装,则配置成功。

2、在Android项目中,新建一个MyNDK类并声明加载的动态库模块名称和native方法

3、在main目录下创建jni目录,并在下面创建3个文件Android.mk 和Application.mk

首先右击main目录——New——Folder——JNI Folder

然后右击jni目录——New——File生成Android.mk 、Application.mk两文件如下:

Android.mk的内容为:

LOCAL_MODULE表示加载模块(动态so库)的名称,

LOCAL SRC FILES表示需要参与编译的源文件(c或c++文件)。

Application. Mk为:

常用的配置项是APP ABI,它表示CPU的架构平台的类型,目前市面上

常见的架构平台有 armeabi、x86和mips,其中在移动设备中占据主要地位的是 ameobi,这也是大部分apk中只包含 armeabi类型的so库的原因。默认情况下NDK会编译产生各个CPU平台的so库,通过 APP_ABI选项即可指定so库的CPU平台的类型,比如 armeabi,这样NDK就只会编译armeabi平台下的so库了,而all则表示编译所有CPU平台的so库。

4、使用javah命令,产生MyNDK类(声明了native方法)的头文件

先在androidstudio中,点一下小锤子,就能编译项目,并在build/intermediates/classes/debug下生成对应着java文件的class文件如下:

使用命令行,跳转到main目录下,使用命令,编译出头文件并输出到jni目录

javah -d jni -classpath ../../build/intermediates/classes/debug com.example.zjj.user_define.MyNdk

-d jni,是将输出文件夹定为jni。

-classpath ……/debug,是指明当前位置到class文件的目录路径。

com.example.zjj.user_define.MyNdk,是“包名+类名”格式。

此时去jni目录下,可看到生成的头文件:

以及该头文件中的内容:

5、在jni目录下,新建.c 或.c++文件,实现头文件中的方法。

我这里是Myjni.c文件,内容如下:

#include "com_example_zjj_user_define_MyNdk.h"
#include<stdio.h>
JNIEXPORT jstring JNICALL Java_com_example_zjj_user_1define_MyNdk_getStrig
(JNIEnv *env, jobject thiz){
    return (*env)->NewStringUTF(env,"hellofrom JNI in getString");
}

引进了stdio库,引进了步骤4中生成的.h头文件

实现了头文件中的方法

(*env)->NewStringUTF(env,"hellofrom JNI in getString")

//将String类型的"hello from JNI in getString"转为jstring

6、跳转到jni目录的父目录,使用ndk-build命令,生成so库

7、此时,MyNDK类中的native方法,已经用JNI实现完成了,在项目调用一下(MyNDK2同理可实现,只不过调用的是静态方法)

结果喜人:

成功了

JNI和NKD入门系列二,mac环境下配置NDk,并在android studio上进行JNI开发相关推荐

  1. Mac环境下配置Java开发环境(jdk+maven+tomcat+idea)

    记录下在Mac环境下配置java开发环境,包括jdk,maven,tomcat和idea 下载及安装jdk 首先到官网下载jdk,这里就用目前官网最新的9.0.4 无脑双击安装就可以: 配置jdk 进 ...

  2. JNI和NKD入门系列一,纯java工程下JNI的开发流程(mac系统)

    Java JNI 的本意是Java Native Interface (Java 本地接口),它是为了方便Java 调用C和 C++等本地代码所封装的一层接口. 我们都知道,Java 的优点是跨平台, ...

  3. JNI和NKD入门系列三,在android studio上设置javah和ndk-build的快捷键

    1.首先点开偏好设置 2.点开External Tools并点击添加按钮 3.出来这样的页面,重要的是Insert macro按钮 4.类似的,选择一个内置变量并确定insert 5.会出现一个头尾由 ...

  4. mac环境下配置gradle\maven

    准备工作:先装好jdk,要求jdk的版本为1.7以上: 一.gradle配置 gradle只需要下载.解压缩.配置路径三步即可,官网介绍的方法就可以,其官网安装说明为:https://gradle.o ...

  5. Tomcat安装之在Mac环境下配置tomcat9

    2019独角兽企业重金招聘Python工程师标准>>> 一. 下载 登录Apache Tomcat官网,地址 http://tomcat.apache.org ,点击左边的Downl ...

  6. Mac环境下配置tomcat的步骤详解

    前言 相信对Java Web稍微知道一点,一般对Tomcat都不会陌生,Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接T ...

  7. mac环境下配置nginx

      1.建议使用homebrew安装(ruby安装 brew install ruby)   ruby -e "$(curl -fsSL https://raw.githubusercont ...

  8. Quantopian 入门系列二 - 流水线 (下)

    本文含 8225 字,28 图表截屏 建议阅读 42 分钟 本贴接着上贴[Quantopian 入门系列二 - 流水线 (上)]的内容,讨论下面目录的 5- 8 节: 简介 因子 筛选器 分类器 掩码 ...

  9. 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程

    机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程) 目录(?)[+] 一多变量的线性回归 二批处理 三特征缩放 四正规方程 五多变量非线性回归 一.多变量的线性回归 在#机 ...

最新文章

  1. 动态代理竟然如此简单!
  2. spring-cloud eureka注册发现
  3. Redis的安装和部署
  4. flink搭建集群(一主三从)
  5. Qt Creator开放项目
  6. Python中深拷贝与浅拷贝的区别?
  7. 【aspnetcore】添加自定义json配置文件
  8. 浅谈Vue之双向绑定
  9. 如何开发一个学生成绩管理糸统(9)
  10. java后端工程师平时开发或多或少会用到eclipse,那么它有哪些快捷键呢
  11. c语言程序设计工资纳税系统流程图,c语言程序设计,纳税工资系统.doc
  12. [Hands On ML] 8. 降维
  13. 【SSM面向CRUD编程专栏 3】关于黑马程序员最全SSM框架教程视频,P37集老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题
  14. java接口测试工具_【分享】接口工具对比(apipost、jmeter、postman、swagger等)
  15. c语言比赛积分程序,C语言积分赛.doc
  16. html间隔怎么打_iPhone手机便签内容怎么设为重要事项?
  17. HttpClient 使用证书访问https站点
  18. Unity3D_(游戏)卡牌03_选关界面
  19. 脑图管理项目很方便清晰!
  20. clickhouse语句_Siem落地方案:初识clickhouse

热门文章

  1. 基于PCI接口的数据采集卡!(第一次做的板卡)
  2. Keystone详解
  3. IEC61850笔记--IEC61850应用入门(三)
  4. C2C、B2B、B2C解释(转)
  5. 虹软Linux离线激活,虹软linux错误
  6. 移动互联网开发技术教学网站项目研究综述
  7. RabbitMQ用户管理界面各个标签的解释,使用图片标注
  8. Oracle Active Data Guard和Data Guard的区别
  9. linux各种配置笔记
  10. 技术文摘5 发展 礼品