使用GPL许可证 昨天在《程序员》上看到一篇访谈文章,孟岩就3G手机软件采访科泰世纪的陈榕看了后,{dy}个感觉就是陈榕没做过手机软件其实”不知为不知”也无所谓, 但陈榕扯了一堆”longhorn”、”metedata”
”软件发展方向要等微软出手”之类的话,让我很反感不由心血来潮,想谈一谈我所了解的手机 软件
1 手机软件的运行环境
1.1 概述
手机可以被看作袖珍的计算机它有CPU、存储器(flash、RAM)、输入输出设备(键盘、显示屏、USB、串口)它还有一个更重要的I/O通道, 那就是空中接口手机通过空中接口协议(例如GSM、CDMA、PHS等)和基站通信
既可以传输语音、也可以传输数据
手机的CPU一般不是独立的芯片,换装小游戏,而是基带处理芯片的一个单元,称作CPU核基带处理芯片是手机的核心,它不仅包含CPU核、DSP核这些比较通用的单元,还包含通信协议处理单元通信协议处理单元和手机协议软件一起完成空中接口要求的通信功能
随着芯片技术的不断发展,越来越多的外围电路可以被集成到基带处理芯片中,例如BAP
即基带模拟处理器这样手机才可能越做越小、越做成本越低
1.2 单CPU和双CPU
很多手机只有一个CPU,也就是基带处理芯片中的CPU核在这个CPU上既要跑通信协议,又要实现用户界面(UI)DSP会分担一些计算量繁重的工作,例如语音编解码、安全层的各种算法等
在市场推动下,手机功能在不断发展摄像头、MP3、蓝牙这些功能可以依靠硬件,对CPU的压力还不是很大,但java虚拟机、嵌入式浏览器等应用软件就会对CPU资源有较高的要求
单CPU的首要任务是完成通信协议通信协议软件有着xx的定时要求,如果这个CPU还要兼顾很多应用软件的话,就难免吃力于是双CPU手机应运而生
顾名思义,双CPU手机就是有两个CPU的手机,一个CPU专心把通信协议做好
另一个CPU负责UI、java虚拟机、嵌入式浏览器等应用两个CPU可以做在一个芯片里面,也可以分开
市场上的实际情况是,很多手机设计公司(Design House)没有基带处理芯片的开发能力,他们购买国外公司的手机模块,在外面再加一块CPU模块跑通信协议,自己加的CPU跑UI和应用软件
两者通 过串行口通信当然,也有很多Design House购买国外方案商的开发板级方案,自己做PCB
软件上主要是改改UI和外设驱动
市场上那些智能手机基本上全是双CPU方案,什么Windows CE、SmartPhone、WindowsMobile、Symbian、嵌入式Linux全是运行在第二块CPU上的这些商业操作系统无法和无线通 信协议软件集成到一块CPU上双CPU的手机功能丰富
但它们一般体积大,耗电多,成本高现在市场上的大部分手机还是单CPU的
目前的大部分手机应用,例如Java、BREW、WAP、邮件、摄像头、闪存、MP3、蓝牙,在单CPU方案里都能实现我认为不管3G、4G如何发展, 小巧、实用、低成本的单CPU方案总会占据较大的市场份额微软在单CPU方案的手机市场还没有立足之地,又怎么谈得上xx方向呢?
本文主要介绍单CPU手机
大多数论述也适用于双CPU方案的通信部分
1.3 3G和4G
3G和4G是指第三代、第四代无线通信技术,对手机而言,它们改进的是空中接口的效率
空中接口能以更大的带宽传送数据通过手机无线上网的速度会更快这和话音业务、手机应用软件没有直接的联系
当然,手机的嵌入式数据业务由于更高的带宽,会产生更多的可能不过这些可能性的实现还是会受到手机输入慢、显示屏小等条件的制约
2 手机软件的组成
2.1 概述
手机软件和PC机软件一样从中断向量表开始,因为比较小
看上去更加清晰中断向量表的{dy}个跳转指令当然是跳到复位的处理程序
后面是中断处理、错误处 理的跳转指令一上电
手机就跳转到复位的处理程序,开始检查内存、初始化C运行环境,然后创建{dy}个任务这个任务会按顺序创建、启动其它任务绝大多 数手机程序都是多任务的,但也有一些小灵通的协议栈是单任务的,没有操作系统,它们的主程序轮流调用各个软件模块的处理程序,模拟多任务环境
手机软件可以粗略地分成启动模块、操作系统、协议栈、数据业务、本地存储、驱动程序、用户界面和其它应用启动模块前面已经说过了,下面简单介绍其它部分
2.2 操作系统
操作系统在手机软件只占很小一部分它的主要功能就是提供多任务调度、通信机制有的操作系统会提供动态内存分配,定时函数,但这些都不是必须的例如需要动态内存分配的模块,可以自己管理一个内存池
这样更易于隔离模块和预测内存需求
大多数手机的操作系统都是一个很小的内核,例如REX、HIOS等高通REX的源代码连C代码加汇编也不过一千多行,编译后不过是2、3K的代码量而完整的手机程序一般总有3、4百个C文件,超过一百万行的代码
2.3 协议栈
协议栈是手机软件最复杂的部分,它的复杂性在于它和基带处理芯片的设计密切相关只有具备芯片设计能力的企业才可能开发协议栈协议栈会使用基带处理芯片的所有资源、包括DSP核
2.4 数据业务
数据业务主要有两种:在前一种
手机相当于一个调制解调器,PC机通过手机上网,网络协议全在PC机上,手机提供数据链路另一种是嵌入式数据业务
手机 内部包含TCP/IP/PPP等协议
有时还要实现HTTP和嵌入式浏览器,不需要PC机就可以接入web或wap网络
2.5 本地存储
手机都有本地存储功能,存储电话本、短消息、用户设定等一般手机都有一个基于flash的文件系统早期的手机存储是基于EEPROM的
2.6 驱动程序
硬件驱动一般是指外设驱动
但也有一些设备是集成在基带处理芯片中的驱动程序包括:键盘、电源管理模块、LCD、flash、RTC、串口、USB、SIM卡或UIM卡、射频驱动等
2.7 用户界面
用户界面(UI)又称作人机界面(MMI)
它负责和用户的交互
在必要的时候调用其它模块的功能用户界面处理手机必备功能外,也包含一些相对独立的应用程序
例如日程表、游戏等美工设计也是用户界面设计的重要环节
2.8 其它应用
其它应用包括Java虚拟机、WAP浏览器、邮件软件等
是一些比较大
又相对独立的应用模块
基本上讲完了大家肯定看得挺没意思吧这些程序和微软的longhorn、metedata有什么关系呢?手机程序绝大部分是用C语言写的,有很少的汇编对于做应用软件的程序员,要求具备面向对象、设计模式的思维能力,然后用C语言实现出来:)
高通的BREW就是用C语言硬生生地模仿C ,弄出很多奇怪的宏来一般应用软件的开发不用这么死板
但对各种软件设计方法的了解还是必要的
3 手机的核心技术
手机的核心技术是芯片和协议栈
两者是密不可分的芯片设计需要协议栈来验证,协议栈必须充分发挥出芯片的功能芯片的CPU核、DSP核都可以买到现成的单元
但通信协议部分就需要自己设计了手机比较难做好的是耗电量、恶劣信号环境的性能等
4 第三方软件
4.1 介绍
前面讲到的软件是一个完整程序的各个部分这些部分被放到一起编译
产生一个二进制文件
通过JTAG口(升级时可以用串口)下载到手机的flash中手机一上电
就会从指定地址开始运行这个地址的内容就是跳转到复位处理程序的跳转指令哈哈,又讲回头了
第三方软件是指手机可以通过数据线或者网络下载一些可执行文件到文件系统中然后有一个装载器可以装载、执行这些文件这样第三方就可以开发一些应用程序
下载到手机中来扩充手机功能
这些可执行文件现在主要有两种格式:java程序和BREW程序java程序需要java虚拟机装载运行BREW程序是一个很奇怪的东西
它实际就是 用与编译手机程序相同的编译器编译出来的目标代码这些目标代码必须是可以重新定位的,即不能包含全局和静态变量
装载器将程序将执行权传给 给BREW程序,一种听上去xxx的说法是调用BREW程序的入口函数这个入口函数的位置在BREW程序中是固定的装载器在调用BREW程序的入口函 数时会传入一个地址通过这个地址,BREW程序能够顺藤摸瓜,找到系统提供的各种API的地址
它通过这些API访问手机的显示、通信等功能
java程序基本上是平台无关的,针对各种平台设计的java虚拟机隔离了平台的大部分特性
厂家特意提供的一些OEM功能除外BREW程序显然是平台相关
换一个CPU
就不认识原来的目标码了
4.2 其它
除了java、BREW外
Windows CE、SmartPhone、WindowsMobile、Symbian、嵌入式Linux这些商业操作系统当然可以提供各种创建第三方程序的方法在 这些环境写程序和在PC平台写程序是很相近的
基本上体会不到嵌入式编程的特点,只是屏幕小一些,输入麻烦一些
这些第三方软件不是必需的手机在3G的市场中只占了一个较小的部分,网络是大头而第三方软件相对于手机来说
所占的份额就更小了
《程序员》有一个嵌入式移动开发的专栏,总在讲这些手机第三方软件的开发的其实手机软件只是嵌入式软件的一部分第三方软件在嵌入式移动开发中又能占到多少比重呢?
以上就是我对手机软件的了解余生也晚,所知有限
希望方家指点
————————————————– —————————————-
只用基带芯片,通常称作feature phone
基带芯片加协处理器(CP
通常是多媒体加速器)这类产品以MTK方案为典型代表,MTK全系列的产品基本上都属于这样的方案,展讯等其他公司也在推类似的产品这是增强了多媒体功能的feature phone
基带芯片 应用处理器(AP),也就是通常说的智能手机(smart phone)有的方案将应用处理器和基带处理器做到一颗芯片里面,例如高通的MSM7200A它有一个ARM11核(应用处理器)和一个ARM9核(基带处理器),两者通过共享内存通信当然,智能手机也可以使用增强影音处理能力的协处理器
本文的研究对象是智能手机的应用处理器上的软件,所以仅讨论智能手机
即基带 AP的方案
在智能手机中
手机功能的实现以应用处理器(AP)为主,基带芯片提供通信功能可以把AP看作计算机,把基带 芯片看作AP的无线modem这个无线modem通过AT接口(相当于计算机和调制解调器之间的接口,但各厂家都有扩展命令)提供通话、短消息、上网、 UIM卡等功能本文主要讨论AP上的软件
本文提到的”AP软件”是指应用处理器(AP)上所运行软件的总和,本文也将其称作手机软件或智能手机软件如果把手机看作一台电脑,手机软件就相当于电脑上的操作系统与所有常用软件的集合所以手机软件的重要性是不言而喻的
另一方面,手机软件是智能手机的主要成本因素按照一位Design House老板的说法:”硬件电路应该没问题.只要软件可以搞定”当然,AP软件不是那么容易搞定的在讨论AP软件现状前,让我们先看看AP软件的构成
从实现的角度看:AP软件=操作系统 中间件 应用软件以google的android为例:
图1 Android的软件框图
当然这只是个粗略的说法
没有包括引导程序(bootloader)从执行的角度看,AP软件总是从引导程序开始运行,装载操作系统内核后将 控制权交给操作系统;操作系统装载文件系统,执行文件系统上的系统初始化程序,大显手机主题下载
启动所有后台服务程序
运行一个窗口管理器,为用户提供图形用户界面然 后,就是根据用户的操作执行窗口管理器的某项功能或调用相应的程序了
智能手机使用的操作系统主要有Winodws Mobile
Symbian,手机主题,Linux
还有一些其它专有系统
例如RIM公司的黑莓(BlackBerry)操作系统(http://www.blackberry.com/),苹果iPhone的MAC OS X
在 这些系统中,只有Linux内核是一个”全裸”的操作系统Winodws Mobile和Symbian的发布版本都集成了操作系统、中间件和大量应用软件相对于黑莓、iPhone,我们通常把Winodws Mobile
Symbian,Linux称作”开放”系统
因为不同厂商都可以使用(使用成本各有不同)
网上在提到智能手机操作系统时通常还会提到Palm OSPalm OS原来是PDA的操作系统2003年Palm公司收购了Handspring公司,获得了Handspring的Treo智能手机;同时将自己的软硬 件部门分拆为PalmSource(软件)和PalmOne(硬件),其中PalmSource拥有Palm OS2005年9月,一家叫爱可信的日本公司以3.24亿美元的现金收购了PalmSource爱可信将Palm OS更名为Garnet OS爱可信原来的主要业务是一个叫做NetFront的嵌入式浏览器
联通的彩E方案也是这家公司提供的2006年12月,Palm以4400万美元 买下了Palm OS Garnet源代码的非独占性{yj}授权,用于Palm Treo智能手机等产品
上海科泰世纪公司一直在研制自己的”和欣”嵌入式操作系统,并宣布自己与TD-SCDMA产业联盟有很好的合作关系
但目前还没有大量上市的产 品”和欣”是一个专有系统,公开的资料很少”和欣”的主要思想是将软件分解为可以自描述的构件
在使用时根据需要拼装,可以理解为嵌入式领域的 SOA(面向服务架构)SUN的jini在90年代末就提出过”发布和发现服务”的架构
可以将”和欣”看作jini的C/C 实现最 近,Google的Android方案也包含了类似的组件模型,组件(Activity)向系统注册自己的功能
每个组件要使用其它组件的服务时提出自己 的要求(intent)
系统根据intent在已登记的组件中确定合适的组件可见,光有好的想法是不够的,还要有将想法付诸现实的能力
有些公司在研发智能手机软件解决方案时没有使用开放的操作系统
他们可能使用了一些简单的实时操作系统(RTOS)内核
也可能采用了单任务的方案这些公司也会向客户提供自己的SDK(软件开发包)或者方案的源代码使用这些系统可能有以下问题:
系统的稳定性没有经过充分的验证;
没有广泛的第三方软件支持
如果要定制它们的功能,就要投入研发力量熟悉他们的专有方案如果开发的产品因为稳定性方面的考虑不能上市,前期的研发投入就会有较大的浪费
中间件在操作系统的基础上
为应用软件提供了开发平台好的中间件可以提供一个完善的应用软件开发框架(Application Framework)中间件要解决的最基本的问题就是:
GUI开发包GUI就是图形用户界面应用程序的开发者使用GUI开发包开发应用程序的图形界面
组件通信机制中间件要为应用程序提供通信方式
中间件的功能是很繁杂的所谓”中间件,看不见”,应用程序主要负责与用户的交互
大量与用户交互无关的、看不见的功能都是在中间件中实现的,并封装成接口给应用程序调用
大多数提供操作系统的公司都提供包含中间件的智能手机软件平台只有在Linux平台
我们才需要自己定制内核,自己构造中间件和应用软件也有一些提供Linux中间件的公司,例如韩国的MIZI Research(www.mizi.com)
国内的飞漫软件(www.minigui.com)等爱可信也提供基于Linux平台的智能手机开发平台(ACCESS Linux Platform)
应用软件包括厂家定制的用户界面(UI)和第三方提供的应用软件智能手机的一个强项就是能够自由安装和卸载第三方提供的应用软件不过,功能手机也可以通过J2ME或BREW开放第三方软件开发平台,只是功能上略弱一些
2.3 AP软件的现状
目前市场上的手机还是以功能手机为主,特别是加CP的功能手机例如:很多小公司都在使用从各种渠道获得的MTK方案也有大公司用MTK,例如PHILIPS的399就使用了MTK的MT6227但智能手机的市场份额呈明显的上升趋势
粗略估计:在出货的智能手机中,AP软件以Symbian和Winodws Mobile为主,有少量采用Linux的手机(摩托罗拉、三星等)黑莓在国外有较大市场份额,但暂时没有引入国内另外
还有一个使用专有系统的iPhone
值得注意的是,Winodws Mobile在国内的出货量在不断上升按照黄思源(http://blog.sina.com.cn/huangsiyuan)的分析
市场上有5种Winodws Mobile:
“xx”版行货的Windows Mobile简体中文版;
“xx”版往往设备上标有欧洲运营的标志
这种设备兼具{dy}种的功能和相对较低的价格;
“平民”版用Windows CE装上一些应用软件,充作Windows Mobile;
“李鬼”版在其它操作系统上”临摹”的Windows Mobile,{dy}二层菜单相似
其它就不一样了;
“押寨”版,从其它设备中”扒”下来的,找个相似的设计硬装进去
为什么这么乱,就是因为好卖这也从一个侧面说明了品牌的力量
智能手机和Feature Phone究竟有什么区别?其实,Feature Phone可以实现智能手机的大多数功能两者最本质的区别就是不同的出发点Feature Phone是在不断扩充应用功能的无线通信终端(行业术语叫移动台)
而智能手机是增加了无线通信功能的手持式电脑
Feature Phone的软件是从通信行业的无线终端软件发展而来,是不断扩充应用功能的嵌入式软件;智能手机的软件是从计算机行业的通用操作系统按照手持设备的需求 裁减、演变而来两者的软件是不同行业、不同思维模式的程序员开发的
但是这两个行业、这两种思维模式正在不断地融合手机其实就是所谓3C合一
即计算机(Computer)、通讯(Communication)和消费类电子产品(Consumer Electrics)融合的典型代表
通信上有个5W,即任何人(Whoever)在任何地点(Wherever)、任何时间(Whenever)可与任何对象(人或计算机,Whomever)互通任何信息(语言、图像、文字和数据,Whatever)这只是智能手机要实现的通信功能
3C、5W都是十几年前的概念了,手机将扮演的更重要的角色是就是移动信息终端或者说移动信息平台在移动状态 下
人类通过手机这个终端接入信息社会这个巨大的网络;信息社会通过手机这个平台将内容发布给人类这也就是为什么Google这样以信息服务为主的企业 会重视手机平台的原因或者说,手机除了融合计算机、通讯和消费类电子产品外,手机还在3C与信息服务业的融合中扮演着重要的角色
Feature Phone的软件基本上都运行在CPU的特权模式
在PC程序员看来,Feature Phone的软件就是一个做了UI的宏内核而智能手机的软件体系基本上照搬了PC的软件体系,将内核、驱动(可以编入内核
也可以独立)和应用分开
各 种应用包括最基本的窗口管理器都以应用程序的形式存在,在用户空间运行智能手机软件与PC系统软件的区别主要是在应用层面的
例如显示屏大小、输入方 式;另外智能手机作为便携式设备
必须尽量减小功耗
软件进化的核心思想之一就是复用
不要重复发明车轮从软件上看,智能手机软件的体系架构更先进、更合理体系架构才是智能手机软件的{zd0}优势体系架构使智能手机的可扩展性是近乎无穷的
一个完善的操作系统需要长时间的积累,巨大的研发投入我觉得在智能手机领域,相对于传统的实时操作系统(VRTX、VxWorks、ThreadX等),Windows Mobile、Linux这些从PC操作系统演变来的系统更容易获得成功
http://www.symbian.com.cn/)公司的授权黑莓和iPhone这种专有系统,别的厂家只能学习
不能使用下面主要讨论基于Linux的手机软件
————————————————– ——————————————–
简单说:选择Linux平台的好处就是资金投入少;因为基本上不需要授权费
产品的软件成本也比较低选择Linux平台的不利之处也是很明显的:
北京的一家公司有30多人的研发队伍用QT做智能手机,做了快两年,还没有上市QT是Linux平台上的一种商用图形用户界面(GUI)开发包,也有GPL版本深圳一家公司用Linux GTK做智能手机,完成度比较高了
但还没有推向市场GTK是与QT齐名的GUI开发包,GTK是以LGPL发布的自由软件虽然产品没有上市可能有多方面的考虑
但将Linux手机做到产品化的难度也可见一斑
Linux手机没有统一的应用软件开发平台
Windows Mobile和Symbian都是一家公司主导的,有统一、开放的应用软件开发平台有很多公司、个人为它们开发应用软件但是Linux手机没有统一的 应用软件开发平台,因此没有大量的第三方应用这可能是Linux手机最难克服的缺点了因为这个缺点是Linux作为开源软件所固有的尽管不少公司或 联盟都想统一Linux平台,但至少目前还没有明显的效果而且统一的Linux应用平台,即使是开源的,似乎也不符合Linux的自由精神这是自由和 集中、开源和商业的一个很难调和的矛盾
从2007年开始出现的OpenMoko、Android、GPE Phone Edition等开源Linux手机方案开放了自己的参考设计,在一定程度上降低Linux手机软件的研发难度但这些方案本身还存在各种问题即使有比 较成熟的参考设计,也需要资深工程师才有应用、定制这些方案的能力即使作出样机
没有充分的测试,也不敢投入量产
Linux手机没有统一的品牌,在品牌优势上远低于Windows Mobile或Nokia主导的Symbian,在市场竞争中处于不利态势
Linux方案能够降低软件成本的主要原因就是使用了包括Linux内核在内的大量开源软件 开源软件总是按照某个软件许可证发布的
必须遵守开源软件的许可证
才能合法地使用开源软件有很多种开源软件许可证最常见的许可证就是GPL和LGPL许可证有不同的版本例如Linux内核使用的许可证就是GPLv2
GPL和LGPL都是GNU组织开发的许可证,可以见:http://www.gnu.org/licenses/licenses.html GNU是倡导自由软件的非盈利组织
GNU组织为世界提供了大量优秀的自由软件GPL代表The GNU General Public LicenseLGPL代表The GNU Lesser General Public License尽管这些文本有中文翻译,但法律上生效的还是英文文本
我们可以自由地运行GPL软件,例如使用gcc编译器编译商用软件但如果我们在自己的程序中引用了GPL软件 (不管是静态链接还是动态链接),并发布这个程序,我们就必须给获得该程序的人提供相同的权利,通常是也按GPL发布指责GPL的人根据这个特性将 GPL称作病毒
Linux内核是以GPL许可证发布的不过,Linus Torvalds(Linux的原作者)在GPL许可证前加了说明:它规定在内核上执行的应用程序不受GPL的制约所以在Linux上运行的应用软件可 以是私有的但是如果我们修改了Linux内核,就必须以GPL发布修改过的内核例如Google的Android平台需要修改内核
它在发布二进制映 像时就必须发布所修改内核的源代码当然,Google发布的内核代码只是基于模拟器(QEMU)的内核版本,没有什么参考价值
关于Linux上的驱动程序模块(需要装载到内核运行)是否要遵守GPL,以前有争议,现在的说法是只要该模块仅使用公开的内核接口
就可以不按照GPL发布一般而言
GPL不适合于商业软件除非厂家在用GPL发布软件的同时还能找到盈利模式确实有不少公司做到了,软件不收费,但服务是收费的
这是基于GTK的方案
组件通信选择了D-Bus上图也列出了一些最常用的开源软件包事实上,在手机软件的发布版本中可能要使用几十个开源软件包其中GUI开发包的选择是一个很关键的选择,因为GUI开发包的选择会影响大部分其它组件的选择
Android的做法比较特殊,它没有使用Linux平台的GUI开发包Android系统中包含一个Java虚拟机,它的GUI开发包、应用开发框架(framework)都用java语言实现
然后由Java虚拟机解释运行下面还会讨论
Linux平台的GUI开发包主要有QT和GTK两个主流产品KDE是基于QT开发的PC窗口系 统,GNOME是基于GTK开发的PC窗口系统很多Linux发行版的窗口系统都是在KDE或GNOME基础上开发的图1的GNOME Mobile是GNOME项目组计划开发的移动应用开发平台,目标是规范基于GTK的移动应用开发,这个项目目前还没有完成
QT是使用广泛的跨平台GUI开发包QT的嵌入式版本主要有两个部分:Qtopia Core(原来叫QT/Embedded)和QtopiaQtopia Phone Edition是在Qtopia和Qtopia Core基础上定制的手机版本图2是Qtopia Phone Edition的架构QCop是该平台的组件通信方式,类似于KDE平台的DCop
图2 Qtopia Phone Edition架构
Qtopia Phone Edition原来是商业软件
从4.3版本开始发布开源软件从上图可以看到,Qtopia Phone Edition的完成度也不高,从Qtopia Phone Edition出发到完成一个商用手机还需要做大量的工作,例如选择基于QT的浏览器、邮件、即时通讯程序等
GTK和QT有两个明显的区别:
文档太少当然这也是开源软件的一个特点开源软件的开发者通常比较少
他们更愿意把时间花在代码上而不是文档因为代码发展很快,即使有文档
也很难与代码同步
OpenMoko 把主要精力放在了整机软硬件设计上
对统一的API接口没有给予充分的重视这一点与LiPS、Android、Nokia的Maemo等有很大区别其 实开源手机方案应该将统一应用软件开发平台作为一个主要目标虽然很难实现
但Linux手机确实需要一个统一的应用软件开发平台即使是三国鼎立,也比 诸子百家要好
前面也介绍过,Android的一个重要特点就是它的应用框架和GUI库都用 Java语言实现Android内部有一个叫作Dalvik的Java虚拟机,Java程序由这个虚拟机解释运行Android平台的应用程序也必须 用Java语言开发网上有评论说Android的虚拟机使用Apache的Harmony类库Harmony类库是Apache组织开发的开源 Java类库,用Apache许可证发布
Android应用框架采用了Mash-up的组件模型:组件(Activity) 向系统注册自己的功能,每个组件要使用其它组件的服务时提出自己的要求(intent),系统根据intent在已登记的组件中确定合适的组件 Android平台的API文档很完善在我看来,基于Android平台开发应用软件应该是一件轻松、愉快的事情但是
选择Android平台存在以 下问题:
在没有源代码的情况下
也可以把Android移植到兼容的开发板(CPU核采用ARMv5指令集)上,但因为不能定制而无法将其用于实际产品Google现在没有明确什么时候发布中间件的源代码其实Google也没有明确说过将发布中间件的源代码
Google说Android是”the first complete, open, and free mobile platform”在英文中”free”既可以解释成”自由”,也可以解释成”免费”如何解释xx在于Google我觉得Google最想抓住的是 应用软件的开发者
即希望公司和个人都学习它的SDK,为它的平台开发应用软件Google肯定会和厂家合作,开发支持Android平台的手机但 Google是否会在网络上xx开放中间件代码,还是个未知数
如果Googlexx开放这个平台,那么与J2ME类似,各公司肯定会在这个平台上添加自己的扩展,使各平台不能xx兼容所以,Google很可能用商业手段来保证Android平台的一致性
(本文源自:深蓝手机批发网http://slbl.5d6d.com)