Android NDK应用原理
2024-09-06 10:38:39
那么首先看一下Android的系统框架:
最底层是Linux Kernel,然后上面是封装的库及Android runtime。再上面是Application Framework。最顶层的就是App了。
而App开发者最主要的就是专注于App层。但是由于某些原因要使用到NDK编程,所以会涉及到系统开发(中间层)的开发。系统开发的流程如下图所示:
Java App通过JNI(Java Native Interface)Java本地接口机制调用开发者自己添加的C或者C++本地原生库。
NDK类似于Android的系统开发,也是需要通过JNI来做中间调用的。NDK的全称是Native Developing Kit,当然官方还提供了一些NDK本地API供开发者调用。
下图为NDK应用的五大开发流程步骤:
应用程序调用流程如上图所示:Android App通过Java Framework调用Java SDK API, 通过JNI调用本地库文件,也就是NDK API。
而具体的NDK调用过程如下图所示:
当然在了解了原理之后还是需要进行实际的代码测试。我选择了彩度转灰度图及高斯模糊这两个例子,分别用JAVA和NDK实现比较性能。在Android2.3系统模拟器,NDK的速度比JAVA快一倍。但是换成Android4.0之后的系统之后,JAVA的速度反而比NDK快了。可见在Android4.0系统之后,Google对JVM做了很大的优化啊。具体的测试代码我已经上传到GitHub上了。代码链接
最新文章
- java 500/404错误总结
- 【异常】java.lang.LinkageError: loader constraints violated
- [转] 关于ubuntu的sources.list总结
- jQuery的append和appendTo
- 关于SQL SERVER的N前缀的理解
- mysql 用户方面的操作
- jQuery Dialog弹出层对话框插件
- 在linux服务器上装svn版本管理,自动部署代码到项目
- C# 将日期转换成中文格式
- IOS中的数据存储 简单总结
- android 项目更改包名的方法
- 【DP系列学习一】简单题:kickstart2017 B.vote
- 微信小程序之菜鸟选手入门教学(一)
- Linux initramfs说明
- 帆软报表(finereport) 动态报表
- Sqlite3数据库查看工具
- 一次学生时代的经历,利用Python在机房杀红蜘蛛,脱离老师控制!
- 2019.03.24 Ajax
- mongodb之 3.4.0 mongodb sharing 副本集群搭建
- centos 7 服务管理
热门文章
- [学习笔记]最小割树(Gomory-Hu Tree)
- Python学习笔记(九)——字符串
- python_django_template_url反向解析
- VC++6.0环境中输出特殊字符
- 6361. 【NOIP2019模拟2019.9.18】鲳数
- ES,kibana通过nginx添加访问权限
- NX二次开发-UF_MODL_ask_point_containment获取一个点是在体(面,边)的边界内部,外部,还是边界上
- Codeforce 1175A From Hero to Zero
- shell 单引号&;双引号的使用
- 在Ubuntu中安装MySQL (转载)