Android NDK学习 <一> 简介
2016-03-16 22:48
405 查看
转自:http://blog.sina.com.cn/s/blog_602f8770010146tp.html
作者:Sam (甄峰) sam_code@hotmail.com
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 也是很容易的(
in the NDK package 中下一步察看)
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无法产生最终的APK,只能产生被APK所使用的动态库。(Sam:其实还可以产生native C可执行程序)
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
注意:此处NDK版本为NDK R7C.
作者:Sam (甄峰) sam_code@hotmail.com
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.一组系统头文件
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无法产生最终的APK,只能产生被APK所使用的动态库。(Sam:其实还可以产生native C可执行程序)
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
注意:此处NDK版本为NDK R7C.
相关文章推荐
- Android_利用 adb 命令把电脑和 Android 手机通过 WIFI 进行连接,从此安装应用不需要数据线
- 单机搭建Android开发环境(五)
- Android开发属性动画
- 用chrome调试Android程序
- Android运行时异常“Binary XML file line # : Error inflating class”
- 【Android 初级知识】文字颜色 背景 触摸点击 反馈色 之selector的那些事儿
- JAVA4ANDROID笔记
- Android内核开发:图解Android系统的启动过程
- Android--Alarm机制
- android:installLocation简析
- android 学习心得
- CVTE android实习生一面经验 ----回忆版本
- Android疑难杂症之Theme
- android开源库
- Data Binding 用户指南(Android)
- Android 中DialogFragment全屏实现
- Android即时通讯聊天界面的通用定义XML布局
- 【黑马Android】(03)学生管理系统/动态刷新界面
- 阿里游戏内推android岗位笔试题型总结 ----回忆版本
- Android自定义的圆形进度条