从SDK文档中,偷来一幅Android平台的架构图,如上。在整个架构最底层红彤彤的部分,是Linux Kernel在移动平台的一个移植,它隐藏了硬件、网络等相关的细节,为上层提供了一个相对纯洁的统一接口。除非要做的是Android到不同设备的移植工作,否则对于大部分普通开发者而言,基本上是远观而不必亵玩的。Google一直强调,Android的底层实现异常NB,可移植性超强,暂没有功夫研读,实属遗憾。
靠上一层,是一些核心的和扩展的类库,它们都是原生的C++实现。在这一层,你可以看到很多熟悉的面孔,一如SQLite、WebKit、OpenGL,开源的力量与贡献由此可见。如果,该层类库需要被上层函数调用,就必须要通过JNI的导出相应的接口函数,否则就只能在层次内部自个把玩。
也是在这一层次上,还有为上层Java程序服务的运行时。Dalvik虚拟机,是Android的Java虚拟机,之所以不采用J2ME的虚拟机,一方面是因为J2ME的设计是为了低端机器而优化,而Dalvik则是为了高端一些的机器进行优化,提供更好的性能。另一方面,从商业角度来看,必须绕开J2ME虚拟机,Android才能彻底解放,想怎么开源就怎么开源,不再需要考虑License的问题。
再往上,终于有Java出没了。首先是框架层,这里包含所有开发所用的SDK类库,另外还有一些未公开接口的类库和实现,它们是整个Android平台核心机制的体现。
而在最上面,就是应用层了,系统的一些应用和第三方开发的所有应用都是位于这个层次上,也许要纠结两者的差别,就是系统应用会用一些隐藏的类,而第三方的应用,总是基于SDK提供的东西来搞。
一般来说,Android开发,就是在SDK的基础上,吭哧吭哧用Java写应用。但自从有了NDK,一切有了写小变化。NDK的出现意味着,最上面应用层的内容,可以穿越Java部署的框架层,直接和底层暴露出来的,或者自行开发的C++库直接对话,当然在这些库中需要包含JNI的接口。
人说,这就不是Android也可以用C++开发应用么,但其实,这样的说法不够确切,纯C++应用,是无法被接受的。因为在Android中,大量的核心机制部署在框架层,它们都是用Java实现的,比如控件库,Activity的调度之类的。因此,没了界面,没了调度,还是只用C++做类库比较合适,否则一切都乱了套了。
全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技郴州市湘南科技有限公司官方网址:www.xiangnankeji.cn产品内容:全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技VPS价格表:独立服...
RAKsmart怎么样?RAKsmart机房即日起开始针对洛杉矶机房的独立服务器进行特别促销活动:低至$76.77/月,最低100Mbps带宽,最高10Gbps带宽,优化线路,不限制流量,具体包括有:常规服务器、站群服务器、10G大带宽服务器、整机机柜托管。活动截止6月30日结束。RAKsmart,美国华人老牌机房,专注于圣何塞服务器,有VPS、独立服务器等。支持PayPal、支付宝付款。点击直达...
LightNode是一家成立于2002年,总部位于香港的VPS服务商。提供基于KVM虚拟化技术.支持CentOS、Ubuntu或者Windows等操作系统。公司名:厦门靠谱云股份有限公司官方网站:https://www.lightnode.com拥有高质量香港CN2 GIA与东南亚节点(河内、曼谷、迪拜等)。最低月付7.71美金,按时付费,可随时取消。灵活满足开发建站、游戏应用、外贸电商等需求。首...