6 月26 日,Google Android 发布了NDK,引起了很多发人员的兴趣。NDK 全称:Native Development Kit。
新出生的事物,除了惊喜外,也会给我们带来一定的迷惑、误解。
误解一:NDK 发布之前,Android 不支持进行C 开发
在Google 中搜索“NDK”,很多“Android 终于可以使用C++开发”之类的标题,这是一种对Android 平台编程方式的误解。其实,Android 平台从诞生起,就已经支持C、C++开发。众所周知,Android 的SDK 基于Java 实现,这意味着基于Android SDK 进行开发的第三方应用都必须使用Java 语言。但这并不等同于“第三方应用只能使用Java”。在Android SDK 首次发布时,Google就宣称其虚拟机Dalvik 支持JNI 编程方式,也就是第三方应用完全可以通过JNI 调用自己的C 动态库,即在Android 平台上,“Java+C”的编程方式是一直都可以实现的。
当然这种误解的产生是有根源的:在Android SDK 文档里,找不到任何JNI 方面的帮助。即使第三方应用开发者使用JNI 完成了自己的C 动态链接库(so)开发,但是so 如何和应用程序一起打包成apk 并发布?这里面也存在技术障碍。我曾经花了不少时间,安装交叉编译器创建so,并通过asset(资源)方式,实现捆绑so 发布。但这种方式只能属于取巧的方式,并非官方支持。所以,在NDK 出来之前,我们将“Java+C”的开发模式称之为灰色模式,即官方既不声明“支持这种方式”,也不声明“不支持这种方式”。
误解二:有了NDK,我们可以使用纯C 开发Android 应用
Android SDK 采用Java 语言发布,把众多的C 开发人员排除在第三方应用开发外(注意:我们所有讨论都是基于“第三方应用开发”,Android 系统基于Linux,系统级别的开发肯定是支持C语言的)。NDK 的发布,许多人会误以为,类似于Symbian、WM,在Android 平台上终于可以使用纯C、C++开发第三方应用了!其实不然,NDK 文档明确说明:it is not a good way。因为NDK 并没有提供各种系统事件处理支持,也没有提供应用程序生命周期维护。此外,在本次发布的NDK 中,应用程序UI 方面的API 也没有提供。至少目前来说,使用纯C、C++开发一个完整应用的条件还不完备。
新闻来源:机锋网