Android NDK基本理解
来源:互联网 发布:音频降噪软件 编辑:程序博客网 时间:2024/04/27 18:28
原文
误解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进行第三方应用开发的条件还不举具备完整。
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的可调试性能
- Android NDK基本理解
- Android NDK基本使用:
- 怎样理解 android NDK
- android NDK的理解
- Android NDK入门理解
- Android NDK的理解
- 对Android NDK的理解
- 对Android NDK的理解
- 深入理解 Android NDK 编译
- 对Android NDK的理解【Android】
- Android Scroller基本理解
- android NDK配置和基本使用
- android ndk 入门2 - 基本方法实现
- Android NDK : 基本类型,字符串与数组
- 谈谈你对Android NDK的理解
- 深入理解Android NDK编译环境
- 深入理解 Android NDK 编译(二)
- 深入理解 Android NDK 编译(二)
- mysql批量将列名改成小写
- 2.第九章
- Git使用教程(1)
- Sql语句返回自增Id
- hunterliy小作品之 HunterMusic音乐播放器(Day4-歌词显示实现)
- Android NDK基本理解
- web.xml中的url-pattern 写法小结(附源码分析)
- setValueForKey&setObjectForKey
- 清除浮动的三种常用方法
- 面试题总结
- 半全局立体匹配方法调研,以及一些立体匹配方向的思考
- 对分易教学平台考勤漏洞探索,批量签到app制作杂谈
- 图片显示器(Java+Python)
- 用 PHP 内置函数 fgets 读取文件一行内容