android ndk是什么,android sdk和ndk

  android ndk是什么,android sdk和ndk

  1.前言

  2009年6月26日,GoogleAndroid发布了NDK,引起了许多开发者的兴趣。NDK的全称:NativeDevelopmentKit。下载地址:http://developer.android.com/sdk/ndk/1.5_r1/index.html.

  2.误解

  新事物除了惊喜,也会给我们带来一些困惑和误解。

  在谷歌搜索“NDK”,很多类似“安卓终于可以用C开发了”的标题,都是对安卓平台编程方式的误解。其实Android平台从诞生开始就支持C和C开发。众所周知,AndroidSDK是基于Java的,也就是说所有基于Android SDK开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能用Java”。AndroidSDK刚发布的时候,谷歌宣称其虚拟机Dalvik支持JNI编程,即第三方应用可以通过JNI调用自己的C动态库,也就是在Android平台上,始终可以实现“Java C”的编程方式。

  当然,这种误解有其根源:在AndroidSDK文档中没有对JNI的帮助。即使第三方应用开发者使用JNI完成自己的C动态链接库(so)开发,so又怎么可能和应用一起打包成apk发布呢?还有技术上的障碍。我曾经花了很多时间安装交叉编译器来创建so,通过资产(资源)的方式,实现了捆绑的so发布。但这种方法只能取巧,没有官方支持。所以,在NDK出来之前,我们把“Java C”的开发模式称为灰色模式,即官方既没有声明“支持这种方式”,也没有声明“不支持这种方式”。

  2.2.误解2:有了NDK,我们可以使用纯C开发Android应用程序。

  AndroidSDK是用Java语言发布的,把很多C开发者排除在第三方应用开发之外(注:我们所有的讨论都是基于“第三方应用开发”,Android系统基于Linux,系统级开发肯定支持C语言。)。很多人误以为类似Symbian和WM的NDK的发布,终于可以在Android平台上使用纯C和C开发第三方应用了!事实上,NDK文件明确指出:这不是一条好路。因为NDK不提供各种系统事件处理支持,也不提供应用程序生命周期维护。另外,在此次发布的NDK中,并没有提供应用UI的API。至少目前用纯C和C开发一个完整的应用的条件还不完全。

  3.什么是NDK?

  粗略研究了NDK之后,我对“什么是NDK”的理解如下:

  1.NDK是工具的集合。

  NDK提供了一系列工具,帮助开发者快速开发C(或C)动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者有很大的帮助。

  NDK集成了交叉编译器,并提供相应的mk文件,隔离CPU、平台、ABI等差异。开发人员只需修改mk文件(注明“需要编译哪些文件”、“编译特性要求”等)即可创建so。).

  NDK可以自动将so和Java应用打包在一起,大大减少了开发者的打包工作。

  2.NDK提供了一个稳定的API头文件语句,功能有限。

  Google明确声明该API是稳定的,它将在所有后续版本中支持当前发布的API。从这个版本的NDK可以看出,这些API支持的函数非常有限,包括:C标准库(libc)、标准数学库(libm)、压缩库(libz)和日志库(liblog)。

  4.NDK带来了什么?

  1)随着ndk的发布,“Java C”的开发模式终于转正,成为官方支持的开发模式。

  利用NDK,我们可以用C开发要求高性能的应用逻辑,从而提高应用执行的效率。

  使用NDK,我们可以用C开发需要保密的应用逻辑。毕竟Java包是可以反编译的。

  NDK促进专业so组件供应商的出现。(乐观猜测,要看安卓用户数量)

  2)NDK将是Android平台支持C开发的开端。

  NDK提供了一套开发工具,方便开发者开发和发布C组件。同时,Google承诺在NDK的后续版本中提高“可调”能力,即提供远程gdb工具,以便我们方便地调试C源代码。在支持Android平台的C开发上,我们可以感受到Google花了很大的精力,我们有理由期待“C组件支持”只是GoogleAndroid平台C开发的开始。毕竟C程序员还是码农阵营的绝对主力。将这些人排除在Android应用开发之外,显然不利于Android平台的繁荣。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: