JNI和NKD入门系列二,mac环境下配置NDk,并在android studio上进行JNI开发
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开发相关推荐
- Mac环境下配置Java开发环境(jdk+maven+tomcat+idea)
记录下在Mac环境下配置java开发环境,包括jdk,maven,tomcat和idea 下载及安装jdk 首先到官网下载jdk,这里就用目前官网最新的9.0.4 无脑双击安装就可以: 配置jdk 进 ...
- JNI和NKD入门系列一,纯java工程下JNI的开发流程(mac系统)
Java JNI 的本意是Java Native Interface (Java 本地接口),它是为了方便Java 调用C和 C++等本地代码所封装的一层接口. 我们都知道,Java 的优点是跨平台, ...
- JNI和NKD入门系列三,在android studio上设置javah和ndk-build的快捷键
1.首先点开偏好设置 2.点开External Tools并点击添加按钮 3.出来这样的页面,重要的是Insert macro按钮 4.类似的,选择一个内置变量并确定insert 5.会出现一个头尾由 ...
- mac环境下配置gradle\maven
准备工作:先装好jdk,要求jdk的版本为1.7以上: 一.gradle配置 gradle只需要下载.解压缩.配置路径三步即可,官网介绍的方法就可以,其官网安装说明为:https://gradle.o ...
- Tomcat安装之在Mac环境下配置tomcat9
2019独角兽企业重金招聘Python工程师标准>>> 一. 下载 登录Apache Tomcat官网,地址 http://tomcat.apache.org ,点击左边的Downl ...
- Mac环境下配置tomcat的步骤详解
前言 相信对Java Web稍微知道一点,一般对Tomcat都不会陌生,Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接T ...
- mac环境下配置nginx
1.建议使用homebrew安装(ruby安装 brew install ruby) ruby -e "$(curl -fsSL https://raw.githubusercont ...
- Quantopian 入门系列二 - 流水线 (下)
本文含 8225 字,28 图表截屏 建议阅读 42 分钟 本贴接着上贴[Quantopian 入门系列二 - 流水线 (上)]的内容,讨论下面目录的 5- 8 节: 简介 因子 筛选器 分类器 掩码 ...
- 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程
机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程) 目录(?)[+] 一多变量的线性回归 二批处理 三特征缩放 四正规方程 五多变量非线性回归 一.多变量的线性回归 在#机 ...
最新文章
- 动态代理竟然如此简单!
- spring-cloud eureka注册发现
- Redis的安装和部署
- flink搭建集群(一主三从)
- Qt Creator开放项目
- Python中深拷贝与浅拷贝的区别?
- 【aspnetcore】添加自定义json配置文件
- 浅谈Vue之双向绑定
- 如何开发一个学生成绩管理糸统(9)
- java后端工程师平时开发或多或少会用到eclipse,那么它有哪些快捷键呢
- c语言程序设计工资纳税系统流程图,c语言程序设计,纳税工资系统.doc
- [Hands On ML] 8. 降维
- 【SSM面向CRUD编程专栏 3】关于黑马程序员最全SSM框架教程视频,P37集老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题
- java接口测试工具_【分享】接口工具对比(apipost、jmeter、postman、swagger等)
- c语言比赛积分程序,C语言积分赛.doc
- html间隔怎么打_iPhone手机便签内容怎么设为重要事项?
- HttpClient 使用证书访问https站点
- Unity3D_(游戏)卡牌03_选关界面
- 脑图管理项目很方便清晰!
- clickhouse语句_Siem落地方案:初识clickhouse