NDK相关概念与NDK开发步骤
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开发步骤相关推荐
- android ndk人脸识别,NDK开发-实现支付宝人脸识别功能
1.下载 首先先去官网 https://opencv.org/opencv-3-2.html 下载 Android SDK: sourceforge ,下载下来以后我们的开发方式目前有两种:一种是基于 ...
- 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )
文章目录 I . 创建 NDK 项目 II . NDK 项目 相关配置 III . NDK 中获取 Android 版本号 IV . 使用 __system_property_get 可获取的参数 I ...
- NDK篇 - JNI NDK 初探
前几天一直在忙项目,所以断更了两天,今天继续写.进入到 NDK 篇了,先来了解下 NDK 与 JNI,后面的文章将带大家来交叉编译一些成熟的开源项目. 目录: 什么是 JNI 什么是 NDK Andr ...
- NDK(一):NDK 的集成
文章目录 一.JNI 简介 二.NDK是什么 三.NDK配置 四.NDK 工程目录 4.1 目录结构 4.2 build.gradle 4.3 CMakeLists文件 五.工程实践 一.JNI 简介 ...
- android ndk 文件管理,Android NDK 入门与实践
NDK 是什么 NDK 全称 Native Development Kit,可以让您在 Android 应用中调用 C 或 C++ 代码的工具. NDK 好处 1.NDK 可以生成 .so 文件, 方 ...
- react项目开发步骤_成为专业React开发人员的31个步骤
react项目开发步骤 我为达到可雇用水平而进行的每个项目和课程. (Every single project and course I took to reach a hireable level. ...
- hadoop日志数据分析开发步骤及代码
日志数据分析: 1.背景 1.1 hm论坛日志,数据分为两部分组成,原来是一个大文件,是56GB:以后每天生成一个文件,大约是150-200MB之间: 1.2 日志格式是apache common日志 ...
- 总结android项目的基本开发步骤(转帖)
总结android项目的基本开发步骤(转帖) 做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流. 一 应用规划: ※确定功能. ※必须的界面及界面跳转的流程 ...
- 艾伟:MOSS 2007 项目的开发步骤
如何利用Sharepoint开发一个完全不同于Sharepoint风格的站点,这是这篇文章要讨论的内容.以下是项目的开发步骤: 步骤1:定义基本的网站地图和设计 就像许多Web项目一样,基本的站点地图 ...
最新文章
- yapi-docker
- 用Java写一个植物大战僵尸简易版!
- Python入门100题 | 第031题
- 海康开放平台音视频方案对比(rtsp、http-flv、hls、rtmp)
- Task On The Board CodeForces - 1367D(思维)
- E:Johnny and Grandmaster
- android xml图片圆角矩形,使用Path自定义圆角图片
- ajax 前端报错,Django ajax 发送post请求 前端报错解决
- JAVA运行时,获取运行路径和JRE路径
- 微波炉控制器的设计(EDA课程设计)
- 欧姆龙HOSTLINK协议,上位机软件欧姆龙HOSTLINK协议,适合欧姆龙全系列PLC
- Java集合源码剖析——基于JDK1.8中LinkedList的实现原理
- Photoshop 有什么技巧让你相见恨晚?
- 法语语法学习笔记——代词(2)
- cents7 mysql数据库安装和配置
- cpu是计算机硬件中的,电脑硬件CPU介绍
- Coco2d-x 3.x : Cocos Studio 制作的UI无法正确显示,出现绿色或白色底
- 解释器模式计算机Demo
- 绘图工具——绘制地图
- 微信公众平台群发规则说明