为什么需要ndk?
1. 跨平台
有些产品是需要放到多个平台下的,osx, windows, ios, Android,一些后台操作直接用C++编写,ios和osx是支持C++的,Android使用ndk,windows可以用宏定义作适当的适配。
2. 使用成熟的C,C++库
a. 开源库,这个不必多说。b. 自己公司里面成熟的私有库,过往产品很可能都是基于这些库的。
3. 效率
一些图片处理等耗时的操作,会放到C层来实现。
4. 需要在su上执行的脚本
比如说截屏。需要超级权限,在su shell上执行。
============
既然谈到ndk,就顺便谈谈对C++的看法吧。
C++复杂?或许吧。
我记得以前的一个总监提过,我们只是用C++的一部分。的确,我们常用的仅仅是C++的一个小小的子集,并不需要什么都掌握的,更何况,一个项目中能用到多少特性了。
很久以前我在做pdf文档解析的时候,时间关系,我对自己写的代码并不是很满意,至少我个人觉得还是有很大的提升空间的。但是产品出来之后,总监很是满意,还特意比较了下市面上的产品,我的解析速度还更快点。这就是C++的魅力所在。
但是
C++工程师水准良莠不齐,不够严谨的工程师犯下错误之后,比较难定位。这就是越来越多企业渐渐不用C++的缘故之一。
更何况,企业都是资本驱动型的,在硬件过剩,并且相对廉价的时代,都会选择开发效率高,并且容错能力强的新一代脚本语言,即便是小白也很容易上手。
时代一直在变,C++兴起过,也会有不受欢迎的时候,但是离淘汰尚远,也有自己的使用领域,好比汇编语言的生命周期。