Android NDK学习 <一> 简介
来源:互联网 发布:mac下pe制作u盘启动盘 编辑:程序博客网 时间:2024/06/05 10:15
Android NDK( Native Developer Kit )是个工具集,它提供一套方法,使Android应用程序(Java程序)可以内嵌native(C,C++)程序。
Android应用程序(Java程序)运行于Dalvik虚拟机中。NDK允许应用程序的一部分使用native语言(C,C++)来实现。这对很多程序都是有帮助的,比如需要利用以前完成的C,C++代码,也可以提高运行速度。
NDK提供以下:
1. 一组工具和编译文件,用来将C/C++代码生成Native库。
2. 将Native库嵌入应用程序包(APK)的方法。
3. 一组Native系统头文件和库。它们支持所有未来Android版本(从Android1.5开始)。但应用程序使用Native Activity则必须在Android2.3或更高版本使用。(因为android.app.NativeActivity从API 9才有)
4. 文档,例子和指南。
最近的NDK(NDK R7C)支持的指令集如下:
1. ARMv5TE (including Thumb-1 instructions)
2. ARMv7-A (including Thumb-2 and VFPv3-D16 instructions, with optional support for NEON/VFPv3-D32 instructions)
3. x86 instructions (see CPU-ARCH-ABIS.HTML for more information)
ARMv5TE(包括Thumb-1)与ARMv7-A的主要区别是:ARMv7-A支持硬件VFP, Thumb-2,Neon指令。
可以编译为任意一种或者两者的指令集,缺省编译为ARMv5TE指令。但转换为 ARMv7-A 也是很容易的(Application.mk 中修改即可)。也可以在同一时刻编译为双指令集。( CPU-ARCH-ABIS.HTML in the NDK package 中下一步察看)
NDK提供libc(C库),libm(数学库), 3D graphics 库的稳定头文件等。
NDK的成分如下:
NDK包含APIs,文档,例子程序等。
Developer Tools包含如下:
1.交叉编译器,可以在Linux,Windows,MacOS下产生 native ARM二进制文件。
2.一组系统头文件
NDK需要GNU Make 3.81或者以上版本(make -v可以看到)。
另外:Android1.5之后,Android 2.3之前的Android版本。使用C/C++代码,只能用JNI方式,并使用NDK编译。
但在Android2.3 之后,因为有了 android.app.NativeActivity。所以可以不再利用JNI方式由Java调用C/C++代码编译出的库了。
注:一些Linux下单列出来的库,被合并到C库中了,例如libpthread.so. 被合并入libc.so
Android应用程序(Java程序)运行于Dalvik虚拟机中。NDK允许应用程序的一部分使用native语言(C,C++)来实现。这对很多程序都是有帮助的,比如需要利用以前完成的C,C++代码,也可以提高运行速度。
NDK提供以下:
1. 一组工具和编译文件,用来将C/C++代码生成Native库。
2. 将Native库嵌入应用程序包(APK)的方法。
3. 一组Native系统头文件和库。它们支持所有未来Android版本(从Android1.5开始)。但应用程序使用Native Activity则必须在Android2.3或更高版本使用。(因为android.app.NativeActivity从API 9才有)
4. 文档,例子和指南。
最近的NDK(NDK R7C)支持的指令集如下:
1.
2.
3.
ARMv5TE(包括Thumb-1)与ARMv7-A的主要区别是:ARMv7-A支持硬件VFP, Thumb-2
可以编译为任意一种或者两者的指令集,
NDK提供libc(C库),libm(数学库), 3D graphics 库的稳定头文件等。
NDK的成分如下:
NDK包含APIs,文档,例子程序等。
Developer Tools包含如下:
1.交叉编译器,可以在Linux,Windows,MacOS下产生 native ARM二进制文件。
2.一组系统头文件
- libc (C library) headers
- libm (math library) headers
- JNI interface headers
- libz (Zlib compression) headers
- liblog (Android logging) header
- OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers
- libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).
- A Minimal set of headers for C++ support
- OpenSL ES native audio libraries
- Android native application APIS
NDK同时还提供一套编译系统,以方便使用。可以不必了解Toolchain/CPU/Platform/ABI等细节,只是创建一个简单的build 文件,指明哪个文件需要被编译,以及哪个Android应用程序将要使用它,就可以编译成功。
NDK需要GNU Make 3.81或者以上版本(make -v可以看到)。
另外:Android1.5之后,Android 2.3之前的Android版本。使用C/C++代码,只能用JNI方式,并使用NDK编译。
但在Android2.3 之后,因为有了 android.app.NativeActivity
注:一些Linux下单列出来的库,被合并到C库中了,例如libpthread.so. 被合并入libc.so
注意:此处NDK版本为NDK R7C.
文章摘自:http://blog.sina.com.cn/s/blog_602f8770010146tp.html
- Android NDK学习 <一> 简介
- Android NDK学习 <一> 简介
- Android NDK学习 <一> 简介
- Android NDK学习 <一> 简介
- Android NDK学习 <一> 简介
- Android NDK学习 <一> 简介
- Android NDK学习 <一> 简介
- Android NDK学习 <一> 简介
- Android NDK学习之 一. Android NDK简介
- Android NDK学习(1) 简介
- Android NDK 学习笔记(一)
- Android NDK开发一 NDK环境搭建及cmake简介
- Android NDK学习 <四> Application.mk简介
- Android NDK学习 <四> Application.mk简介
- Android NDK学习 <四> Application.mk简介
- Android NDK学习 <四> Application.mk简介
- Android NDK学习 <四> Application.mk简介
- Android NDK学习 <四> Application.mk简介
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- VS2010 编译 error C2440: '=' : cannot convert from 'const char' to 'AMF3DataType'
- 各种ios语法
- 基于jQuery+JSON的省市联动效果
- SQLite数据库安装、试用及编程测试手记
- Android NDK学习 <一> 简介
- 关于单例模式
- Linux下QT图形界面开发概述(1)
- PowerShell笔记
- Qt 多线程与数据库操作需要注意的几点问题
- 使用DirectX截屏
- 排列宝石问题 回溯
- Android NDK学习 <二> Android.mk
- linux查找文件的方法