Android NDK入门理解
2013-03-18 22:24
197 查看
误解1:NDK 发布之前,Android不支持C语言进行开发
从android平台诞生的那一刻起,就意味着android能进行C/C++调用动态链接库进行开发,开发第三方应用的时候不一定必须使用java语言进行开发,但是并不仅仅的限制于java语言来开发第三方应用,因为google曾今在自己的android帮助文档中声明,它的Dalvik虚拟机支持JNI的调用方式,也就是开发第三方应用的时候完全可以通过JNI的方式调用自己的C动态链接库,也就是说只要Dalvik虚拟机支持JNI的话,那么肯定能能实现java与C语言的交互编译。
误解的来源来自android的SDK文档中找不到任何关于JNI方面的帮助文档信息,即使第三方开发者使用JNI完成了自己的动态链接库(.so)的开发,那么.so文件怎么跟自己的APK一起打包并且发布呢?安装交叉编译器创建.so,并通过读取asset(资源的方式),实现so文件的捆绑发布,但是这种方式并非官方支持的方式,,所以NDK出来之前,我们将java+C的开发模式称为灰色开发模式,因为这种方式官方没有说支持,也没有说不支持。
误解2:有了NDK之后,我们可使用纯C进行第三方应用的开发Android应用
Android SDK采用java语言发布,把众多的C开发人员排除在外第三方应用之外(Android是基于Linux系统,系统级别肯定是支持C开发的),NDK文档明确说明:it's not a good way,因为NDK并没有提供各种系统事物处理支持,也没有提供应用程序生命周期的支持,应用程序也没有UI方面的API的支持,所以目前是用纯C进行第三方应用开发的条件还不举具备完整。
NDK=?
3.NDK==Native Development Kit NDK==一系列工具集合
NDK提供了一系列的的工具,帮助开发者快速开发C/C++动态链接库,并自动将so和java应用一起打包成APK,这些工具的提供简化了开发者的步骤。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU,ABI,平台等差异,开发人员只需要简单的修改mk文件(指出哪些文件需要编译,编译性要求 等)就可以创建so
NDK将so与java应用一起打包成APK文件,极大的减轻了开发人员的工作。
4.NDK提供一份稳定的,功能有限的API头文件声明
google 明确声明API是稳定的,在后续的所有版本中都将会支持以前发布的API,目前的API版本功能非常有限,包含:
C标准库(libc),标准数学库(libm),压缩库(libz),Log库(liblog)
5.使用NDK带来的好处
使用NDK我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率
使用NDK我们将需要保密的应用逻辑使用C开发,毕竟java包都是可以进行反编译的
促使专业的so组件商的出现
6.NDK将是Android平台支持C的开端
NDK提供了一系列的开发工具集合,使开发人员能够便捷的发布C组件,同时google承诺将会提高NDK的可调试性能
From:www.eoeAndroid.com
从android平台诞生的那一刻起,就意味着android能进行C/C++调用动态链接库进行开发,开发第三方应用的时候不一定必须使用java语言进行开发,但是并不仅仅的限制于java语言来开发第三方应用,因为google曾今在自己的android帮助文档中声明,它的Dalvik虚拟机支持JNI的调用方式,也就是开发第三方应用的时候完全可以通过JNI的方式调用自己的C动态链接库,也就是说只要Dalvik虚拟机支持JNI的话,那么肯定能能实现java与C语言的交互编译。
误解的来源来自android的SDK文档中找不到任何关于JNI方面的帮助文档信息,即使第三方开发者使用JNI完成了自己的动态链接库(.so)的开发,那么.so文件怎么跟自己的APK一起打包并且发布呢?安装交叉编译器创建.so,并通过读取asset(资源的方式),实现so文件的捆绑发布,但是这种方式并非官方支持的方式,,所以NDK出来之前,我们将java+C的开发模式称为灰色开发模式,因为这种方式官方没有说支持,也没有说不支持。
误解2:有了NDK之后,我们可使用纯C进行第三方应用的开发Android应用
Android SDK采用java语言发布,把众多的C开发人员排除在外第三方应用之外(Android是基于Linux系统,系统级别肯定是支持C开发的),NDK文档明确说明:it's not a good way,因为NDK并没有提供各种系统事物处理支持,也没有提供应用程序生命周期的支持,应用程序也没有UI方面的API的支持,所以目前是用纯C进行第三方应用开发的条件还不举具备完整。
NDK=?
3.NDK==Native Development Kit NDK==一系列工具集合
NDK提供了一系列的的工具,帮助开发者快速开发C/C++动态链接库,并自动将so和java应用一起打包成APK,这些工具的提供简化了开发者的步骤。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU,ABI,平台等差异,开发人员只需要简单的修改mk文件(指出哪些文件需要编译,编译性要求 等)就可以创建so
NDK将so与java应用一起打包成APK文件,极大的减轻了开发人员的工作。
4.NDK提供一份稳定的,功能有限的API头文件声明
google 明确声明API是稳定的,在后续的所有版本中都将会支持以前发布的API,目前的API版本功能非常有限,包含:
C标准库(libc),标准数学库(libm),压缩库(libz),Log库(liblog)
5.使用NDK带来的好处
使用NDK我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率
使用NDK我们将需要保密的应用逻辑使用C开发,毕竟java包都是可以进行反编译的
促使专业的so组件商的出现
6.NDK将是Android平台支持C的开端
NDK提供了一系列的开发工具集合,使开发人员能够便捷的发布C组件,同时google承诺将会提高NDK的可调试性能
From:www.eoeAndroid.com
相关文章推荐
- maven零基础入门小节和简易理解
- 写给步入网络门槛中入门级别工程师中相关Vlan、trunk、hybrid的理解
- 机器人操作系统ROS Indigo 入门学习(8)——理解ROS service 和parameter
- 深入理解Java:注解(Annotation)自定义注解入门
- 微信小程序简单入门理解
- Lattice系列FPGA入门相关6(理解SerDes之1)
- ASP.NET 5 (vNext) 理解和入门
- 深入理解Java:注解(Annotation)自定义注解入门
- Android面试之---谈谈你对Android NDK的理解
- Java入门--认识理解Java中native方法
- niagara架构入门级理解
- 深入理解Java:注解(Annotation)自定义注解入门
- ReactNative开发入门理解
- Spring MVC---3.0 简单入门以及相关理解
- 指针、数组,和指针算术你基本入门了(理解了这些)
- SpringMVC:学习笔记(1)——理解MVC及快速入门
- 深入理解Java:注解(Annotation)自定义注解入门
- 机器人操作系统ROS Indigo 入门学习(7)——理解ROS Topic
- Java入门(1) —— 变量、运算符、分支结构和程序员思维的理解
- Linux驱动入门学习(三):I2C架构全面理解