Android NDK学习笔记1-基础知识篇
来源:互联网 发布:windows平板好用吗 编辑:程序博客网 时间:2024/05/16 17:35
引言
最近开发项目用到了多个C语言编写的动态链接库so,期间遇到很多问题,项目开发完毕后,我觉得有必要把开发中的一些知识点总结下来,并结合我手边的一本经典教程《Pro
Android C++ with the NDK》,写下这个系列的文章,分享给大家,希望给想入门android NDK开发的朋友带来帮助。
什么是 Android NDK?
Android NDK(Native Development Kit )是一套工具集合,允许你用像C/C++语言那样实现应用程序的一部分。同时,Android NDK对于Android SDK只是个组件,它可以帮我们生成的JNI兼容的共享库可以在大于Android1.5平台的ARM CPU上运行,将生成的共享库拷贝到合适的程序工程路径的位置上,以保证它们自动的添加到你的apk包中。
何时使用NDK?
Google仅在极少数情况下建议使用NDK,有如下使用场景:
● 必须提高性能(例如,对大量数据进行排序)。
● 使用第三方库。举例说明:许多第三方库由C/C++语言编写,而Android应用程序需要使用现有的第三方库,如Ffmpeg、OpenCV这样的库。
● 底层程序设计(例如,应用程序不依赖Dalvik Java虚拟机)。
NDK开发有何优点?
1.运行效率高
2.利于充分发挥软硬件优势
3.利于代码复用
4.降低版本控制成本
5.降低开发成本
NDK开发有何缺点?
1.开发难度相对较高
2.调试难度相对较高
3.增加开发团队规模
Android NDK系统文件的结构如下
ndk-build:该shell脚本是Android NDK构建系统的起始点。
ndk-gdb:该shell脚本允许用GUN调试器调试原生组件。
ndk-stack:该shell脚本可以帮助分析原生组件崩溃时的堆栈追踪。
build:该目录包含了Android NDK构建系统的所有模块。
platforms:该目录包含了支持不同Android目标版本的头文件和库文件。Android NDK构建系统会根据具体的Android版本自动引用这些文档。
samples:该目录包含了一些示例应用程序,这些程序可以体现AndroidNDK的性能。有利于学习如何使用Android NDK的特性。
sorces:该目录包含了可供开发人员导入到现有的Android NDK项目的一些共享模块。
toolchains:该目录包含目前Android NDK支持的不同目标机体系结构的交叉编译器。Android NDK目前支持ARM、X86和MIPS机体系结构。Android NDK 构建系统根据选定的体系结构使用不同的交叉编译器。
什么是JNI?
JNI是一种在Java虚拟机控制下执行代码的标准机制。代码被编写成汇编程序或者C/C++程序,并组装为动态库。也就允许了非静态绑定用法。这提供了一个在Java平台上调用C/C++的一种途径,反之亦然。它允许Java类的某些方法原生实现,同时让它们能够像普通Java方法一样被调用和使用。
JNI有什么优势?
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。
何时使用JNI?
宁波瘦腿针http://www.biopls.net/Injection/list-226-1.shtml
1、JAVA程序和本地程序使用TCP/IP或者IPC进行交互。 2、当用JAVA程序连接本地数据库时,使用JDBC提供的API。
3、JAVA程序可以使用分布式对象技术,如java IDL API。
这些方案的共同点是,JAVA和C处于不同的线程,或者不同的机器上。这样,当本地程序崩溃时,不会影响到JAVA程序。
最近开发项目用到了多个C语言编写的动态链接库so,期间遇到很多问题,项目开发完毕后,我觉得有必要把开发中的一些知识点总结下来,并结合我手边的一本经典教程《Pro
Android C++ with the NDK》,写下这个系列的文章,分享给大家,希望给想入门android NDK开发的朋友带来帮助。
什么是 Android NDK?
Android NDK(Native Development Kit )是一套工具集合,允许你用像C/C++语言那样实现应用程序的一部分。同时,Android NDK对于Android SDK只是个组件,它可以帮我们生成的JNI兼容的共享库可以在大于Android1.5平台的ARM CPU上运行,将生成的共享库拷贝到合适的程序工程路径的位置上,以保证它们自动的添加到你的apk包中。
何时使用NDK?
Google仅在极少数情况下建议使用NDK,有如下使用场景:
● 必须提高性能(例如,对大量数据进行排序)。
● 使用第三方库。举例说明:许多第三方库由C/C++语言编写,而Android应用程序需要使用现有的第三方库,如Ffmpeg、OpenCV这样的库。
● 底层程序设计(例如,应用程序不依赖Dalvik Java虚拟机)。
NDK开发有何优点?
1.运行效率高
2.利于充分发挥软硬件优势
3.利于代码复用
4.降低版本控制成本
5.降低开发成本
NDK开发有何缺点?
1.开发难度相对较高
2.调试难度相对较高
3.增加开发团队规模
Android NDK系统文件的结构如下
ndk-build:该shell脚本是Android NDK构建系统的起始点。
ndk-gdb:该shell脚本允许用GUN调试器调试原生组件。
ndk-stack:该shell脚本可以帮助分析原生组件崩溃时的堆栈追踪。
build:该目录包含了Android NDK构建系统的所有模块。
platforms:该目录包含了支持不同Android目标版本的头文件和库文件。Android NDK构建系统会根据具体的Android版本自动引用这些文档。
samples:该目录包含了一些示例应用程序,这些程序可以体现AndroidNDK的性能。有利于学习如何使用Android NDK的特性。
sorces:该目录包含了可供开发人员导入到现有的Android NDK项目的一些共享模块。
toolchains:该目录包含目前Android NDK支持的不同目标机体系结构的交叉编译器。Android NDK目前支持ARM、X86和MIPS机体系结构。Android NDK 构建系统根据选定的体系结构使用不同的交叉编译器。
什么是JNI?
JNI是一种在Java虚拟机控制下执行代码的标准机制。代码被编写成汇编程序或者C/C++程序,并组装为动态库。也就允许了非静态绑定用法。这提供了一个在Java平台上调用C/C++的一种途径,反之亦然。它允许Java类的某些方法原生实现,同时让它们能够像普通Java方法一样被调用和使用。
JNI有什么优势?
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。
何时使用JNI?
宁波瘦腿针http://www.biopls.net/Injection/list-226-1.shtml
1、JAVA程序和本地程序使用TCP/IP或者IPC进行交互。 2、当用JAVA程序连接本地数据库时,使用JDBC提供的API。
3、JAVA程序可以使用分布式对象技术,如java IDL API。
这些方案的共同点是,JAVA和C处于不同的线程,或者不同的机器上。这样,当本地程序崩溃时,不会影响到JAVA程序。
阅读全文
0 0
- Android NDK学习笔记1-基础知识篇
- Android NDK学习笔记1-基础知识篇
- Android NDK学习笔记1-基础知识篇
- Android NDK学习笔记1-基础知识篇
- Android NDK学习笔记1-基础知识篇
- Android NDK 学习笔记
- Android NDK学习笔记
- Android NDK学习笔记
- Android NDK学习笔记
- Android NDK 学习笔记
- Android NDK 学习笔记
- android ndk学习笔记
- ANdroid NDK学习笔记
- Android学习笔记--基础知识
- android学习笔记之NDK
- android NDK开发学习笔记
- Android NDK 学习笔记(一)
- NDK学习笔记:Android.mk
- JQuery.Ajax()的data参数类型
- JAVA集合知识点汇总<三> Map集合
- Redis与关系型数据库的同步问题
- android 判断当前网络是否可用(ping网络),包含wifi和移动数据网络
- elevation的使用
- Android NDK学习笔记1-基础知识篇
- 嵌入式实时操作系统ucosii原理及应用(任哲)-- --阅读笔记2
- ThreadLocal的原理以及在Spring中的应用
- TortoiseSVN SendRpt.exe not found解决方案
- 测试测试第一篇
- MATLAB surfl函数 surfc函数 效果图
- Unity内截屏实现
- hive-修改hive表字段的注释
- 记录几个iTunesMobileDevice的备忘