1.什么是NDK(官方网站:https://developer.android.com/tools/sdk/ndk/index.html)
帮助我们开发C/C++代码编译的工具,这个工具可以将C代码编译成so文件,这个有点类似于百度地图的so文件。

2.什么场景可以用NDK
大型CPU处理计算,(复杂的计算交互)不是很复杂就不要用NDK,完全可以原生。
1.代码的保护(因为apk用JAVA编程的代码容易被反编译,C比较难反编译)
2.大部分开源库都是C/C++编写的,所以NDK调用C/C++比较方便。
3.编译移植。可以写共用的库移植到IOS和Android上。

3.什么是交叉编译
在一个平台生成另一个平台可执行的代码。(例如X86平台--一般为我们的电脑平台,生成在Andorid平台生成的代码执行。)

4.jni是什么
既允许JAVA代码和其它语言的代码进行交互。
jni流程:

5.什么是链接库
1.静态链接库
标准头文件stdio.h,文件大, 把所有依赖都放到这里
2.动态链接库
按需所起,编译的时候按需所取,一般都是动态链接库,但是比较容易缺失文件。

6.make文件介绍
既Android.mk文件:

其中ndk-build表示的是我们的最初编译的时候的命令,ndk-stack命令表示我们可以在调试的时候快速定位到错误的页面,samples文件夹是一些示例文件,例如hello-jni,platforms文件夹里面存放可以编译的文件的sdk版本,docs文件夹是说明文档,如果不清楚的时候直接往这里查看。toolchains文件夹是我们链接库工具箱

NDK开发步骤

步骤:
1.创建一个Android项目
2.在JAVA文件中申明一个含有native的静态方法,例如在MainActivity中添加一行这个方法:

public static native String getStringFromC();

3.新建一个jni文件夹
4.利用javah命令声明.h文件,例如:
其中C:\编程软件\android\adt-bundle-windows-x86-20140702\sdk\platforms\android-19\android.jar表示android.jar文件,在sdk的platforms文件找
javah -classpath bin/classes;C:\编程软件\android\adt-bundle-windows-x86-20140702\sdk\platforms\android-19\android.jar -d jni com.example.ndkdemp.MainActivity
5.在jni文件夹里面创建.c文件,并且导入头文件,一般头文件有:

#include<stdio.h>
#include<stdlib.h>
#include"com_example_ndkdemp_MainActivity.h"

其中com_example_ndkdemp_MainActivity.h表示刚才编译的h文件
6.引入Android.mk文件,一般里面的内容有:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NDKDemo
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

其中NDKDemo表示你的名字,然后hello.c表示你要转编译的c文件
7.利用cmd的ndk-build命令进行编译,其中ndk-build命令需要进入到项目的根目录,(当然,要先配置好)
8.编译完以后在要调用的java文件里面先静态的引用刚才的.c文件:

static{
        System.loadLibrary("NDKDemo");
    }

其中NDKDemo文件表示刚才的名字。
9.直接调用方法,就是第一步里面申明的的方法名字。

NDK相关概念与NDK开发步骤相关推荐

  1. android ndk人脸识别,NDK开发-实现支付宝人脸识别功能

    1.下载 首先先去官网 https://opencv.org/opencv-3-2.html 下载 Android SDK: sourceforge ,下载下来以后我们的开发方式目前有两种:一种是基于 ...

  2. 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )

    文章目录 I . 创建 NDK 项目 II . NDK 项目 相关配置 III . NDK 中获取 Android 版本号 IV . 使用 __system_property_get 可获取的参数 I ...

  3. NDK篇 - JNI NDK 初探

    前几天一直在忙项目,所以断更了两天,今天继续写.进入到 NDK 篇了,先来了解下 NDK 与 JNI,后面的文章将带大家来交叉编译一些成熟的开源项目. 目录: 什么是 JNI 什么是 NDK Andr ...

  4. NDK(一):NDK 的集成

    文章目录 一.JNI 简介 二.NDK是什么 三.NDK配置 四.NDK 工程目录 4.1 目录结构 4.2 build.gradle 4.3 CMakeLists文件 五.工程实践 一.JNI 简介 ...

  5. android ndk 文件管理,Android NDK 入门与实践

    NDK 是什么 NDK 全称 Native Development Kit,可以让您在 Android 应用中调用 C 或 C++ 代码的工具. NDK 好处 1.NDK 可以生成 .so 文件, 方 ...

  6. react项目开发步骤_成为专业React开发人员的31个步骤

    react项目开发步骤 我为达到可雇用水平而进行的每个项目和课程. (Every single project and course I took to reach a hireable level. ...

  7. hadoop日志数据分析开发步骤及代码

    日志数据分析: 1.背景 1.1 hm论坛日志,数据分为两部分组成,原来是一个大文件,是56GB:以后每天生成一个文件,大约是150-200MB之间: 1.2 日志格式是apache common日志 ...

  8. 总结android项目的基本开发步骤(转帖)

    总结android项目的基本开发步骤(转帖) 做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流. 一 应用规划:     ※确定功能.     ※必须的界面及界面跳转的流程 ...

  9. 艾伟:MOSS 2007 项目的开发步骤

    如何利用Sharepoint开发一个完全不同于Sharepoint风格的站点,这是这篇文章要讨论的内容.以下是项目的开发步骤: 步骤1:定义基本的网站地图和设计 就像许多Web项目一样,基本的站点地图 ...

最新文章

  1. yapi-docker
  2. 用Java写一个植物大战僵尸简易版!
  3. Python入门100题 | 第031题
  4. 海康开放平台音视频方案对比(rtsp、http-flv、hls、rtmp)
  5. Task On The Board CodeForces - 1367D(思维)
  6. E:Johnny and Grandmaster
  7. android xml图片圆角矩形,使用Path自定义圆角图片
  8. ajax 前端报错,Django ajax 发送post请求 前端报错解决
  9. JAVA运行时,获取运行路径和JRE路径
  10. 微波炉控制器的设计(EDA课程设计)
  11. 欧姆龙HOSTLINK协议,上位机软件欧姆龙HOSTLINK协议,适合欧姆龙全系列PLC
  12. Java集合源码剖析——基于JDK1.8中LinkedList的实现原理
  13. Photoshop 有什么技巧让你相见恨晚?
  14. 法语语法学习笔记——代词(2)
  15. cents7 mysql数据库安装和配置
  16. cpu是计算机硬件中的,电脑硬件CPU介绍
  17. Coco2d-x 3.x : Cocos Studio 制作的UI无法正确显示,出现绿色或白色底
  18. 解释器模式计算机Demo
  19. 绘图工具——绘制地图
  20. 微信公众平台群发规则说明

热门文章

  1. CComboBox 类详细说明
  2. c枚举类型enum例题_一篇文章让你详细了解Java中Enum枚举类的使用
  3. WPF: RenderTransform特效
  4. jQuery的选择器
  5. Unbuntu18.04通过apt源方式安装mysql5.7.22
  6. Android平台调用WebService详解
  7. Linux下清理内存和Cache方法
  8. 整理一点关于Lucene的学习资料, 方便自己与别人查看
  9. 杨英(帮别人名字作诗)
  10. Symbian错误查询