首先我们要明白jni是干什么的,他在Android中的目的是什么。

我们都知道java是不能够进行调用C代码的,但是它可以调用C代码形成的二进制文件。那么当我们在开发Android的过程中想要调用C代码应该怎么办,这时候我就用到了jni。也就是说jni就相当于一个中间件。它将中间文件与系统平台环境进行整合,生成一个当前系统下可以运行的2进制文件 .exe。

我们也知道

Android手机的内核是linux cpu是arm体系

window x86体系

因此我们在jni编程的过程中需要用到NDK

下面是NDK的环境配置步骤

我们首先是下载Cygwin Terminal

然后找到我的安装目录进入etc目录

找到profile文件然后打开

在文件的32行找到PATH 然后+/cygdrive+NDK下载的目录 例如 /cygdrive/F:/NDK/android-ndk-r10d

然后NDK在Cygwin Terminal环境下的配置就可以了。

下面讲解NDK的开发的流程步骤

1创建一个Android工程并且创建jni目录

2 在项目文件中写一个native本地的方法 例如 public native String helljni();

3用javah中的工具生成一个头文件

生成方法:

1 在Cygwin Terminal 中进入你的项目目录中的bin下面的class目录

2然后ndk-build进行交叉编译

这时候对可能出现找不到文件的错误提示这时你有两种方法

1 可以进入你的src目录 然后ndk-build

2 进入你项目的bin目录 然后执行 java classpath +项目地址/bin/class路径 -jni 包名.类名这时候就会出来了。

4 把生成的这个.h的头文件加入到你的工程jni目录下

5 编写Android.mk文件

6 在Cygwin Terminal 中进入你项目中的jni目录,然后NDK-build进行交叉编译。

这时候后会在你的libs下生成一个动态链接库。

然后在项目大文件中写入静态代码块System.loadLibary(库名称);

Android.mk中内容

LOCAL_PATH := $(call my-dir)    本地路径
include $(CLEAR_VARS)    初始化参数
LOCAL_MODULE    :=Hello  动态链接库中的文件名称 也就是你System.loadLibary()中要加载的名称
LOCAL_SRC_FILES :=com_example_ndk2_MainActivity.c  这是在jni中写的C文件的
include $(BUILD_SHARED_LIBRARY) 链接库的类型 这个是动态链接库

DNk开发步骤与环境配置相关推荐

  1. 使用QtCreator开发ros2的环境配置

    使用QtCreator开发ros2的环境配置 使用环境 操作系统:Ubuntu 20.04 amd64 ros2版本:foxy 选择QtCreator的版本 由于ros2的ros-qtc-plugin ...

  2. vue开发移动端环境配置_如何设置移动开发环境

    vue开发移动端环境配置 The use of mobile devices has increased considerably in the past decade. It has been ov ...

  3. JAVA安装步骤及环境配置

    JAVA安装步骤及环境配置 1.下载jdk 2.运行安装文件 3.java环境配置 java新手,因为记性不好,又数次刷机换系统导致每次重新装java的时候要去网上找步骤,这次重新安装之后索性记录一下 ...

  4. MinGW下载和安装详细步骤 及 环境配置

    一.下载 点击 这里 进入官网下载最新版本的MinGW.(这里下载的是Windows32位,但MinGW的所有软件都将在64位Windows平台上执行,所以32位和64位都是一样的.) 二.安装 1. ...

  5. java环境配置步骤_java环境配置及安装的详细步骤

    java环境配置及安装的详细步骤 发布时间:2020-04-22 14:15:59 来源:亿速云 阅读:141 作者:小新 今天小编给大家分享的是java环境配置及安装的详细步骤,相信很多人都不太了解 ...

  6. 开发测试服务器配置信息,node服务端中台实现及开发测试生产环境配置

    本人node服务端新人一枚,网上找了不少资料,看了很多别人的配置信息,感觉都不是很合适,看的多了自己也明白配置的具体思路跟实现方式了,以下为我的实现方式.通过package.json里面的script ...

  7. android 调试驱动程序,Android驱动程序开发和调试环境配置

    本文用<Android深度探索(卷1):HAL与驱动开发>的随书源代码为例详细说明如何配置Android驱动开发和测试环境,并且如何使用源代码中的build.sh脚本文件在各种平台(Ubu ...

  8. JAVA开发工具包——KDK环境配置

    JDK环境配置: 到官网下载JDK 安装(根据提示就可以) 打开我的电脑–高级系统设置–系统变量 添加JAVA_HOME:根据自己的实际安装路径来添加 添加CLASSPATH: .;%JAVA_HOM ...

  9. python开发工具及环境配置_python_在windows下安装配置python开发环境及Ulipad开发工具...

    最近开始学习Python,在网上寻找一下比较好的IDE.因为以前用C#做开发的,用Visual Studio作为IDE,鉴于用惯了VS这么强大的IDE,所以对IDE有一定的依赖性. Python的ID ...

  10. I.MX6U-ALPHA开发板(环境配置)

    文章目录 一.文件互传 1.开启Ubuntu下的FTP服务 2.Windows下FTP客户端安装 二.Ubuntu 下 NFS 和 SSH 服务开启 1.NFS 服务开启 2.SSH 服务开启 三.U ...

最新文章

  1. Openwrt 刷机后配置WAN口,安装luci和设置中文、安装挂载USB存储。
  2. windows下 wgl 创建渲染上下文步骤
  3. [概率dp] Jzoj P2059 卡牌游戏
  4. php自动打印小票_php操作 cookie
  5. 【论文】NAACL2019 抽取式摘要之 SUMO
  6. MATLAB模糊控制解析及simulink仿真示例(附fis代码和simulink仿真slx文件以及文件使用视频)
  7. ankhsvn 使用_AnkhSVN:在Visual Studio中使用Subversion
  8. 教学设计-饭后百步走
  9. 零数据分析实习经历如何秋招?
  10. MIT6.828学习之Lab1
  11. WordPress给博客文章页添加个性名片
  12. redis setex php,redis中setex命令和set命令有什么区别
  13. 六大设计原则之接口隔离原则
  14. 数据结构二叉树的存储结构
  15. 前缀和-python
  16. 揭秘PLC(三)RTS之IO篇
  17. Outlook2016关联QQ邮箱
  18. shell脚本触发企业微信群机器人
  19. 如何判断自己的网站被攻击了
  20. CMPP3 消息定义2

热门文章

  1. 最优化方法 19:近似梯度下降
  2. Spark ML 构建回归模型
  3. 2021高考成绩查询数学和物理,2021高考成绩什么时候几点可以查
  4. android 绘制分割线,Android 布局中分割线创建的三种方式
  5. 用辩证数学解答“缸中之脑”
  6. PPT之如何设置一个箭头围绕一个顶点旋转?
  7. Qt编写邮件客户端IMAP4(一)收取邮件
  8. 基于BIND实现智能DNS解析
  9. FREE WMA MP3 CONVERTER 1.8缓冲区溢出漏洞
  10. C#实现右下角弹窗效果