问题:
到底基于哪个版本开发好?
问题来源:
由于android市场的开发性,android现阶段的环境比较混乱。而市面上的用户持有手机的android系统版本低到1.6高到4.2都有不同程度的分布,这是这种混乱性体现之一。为了让程序能够支持更多的一用户才产生了这样的问题。
问题分析:
要解决这个问题就要考虑开发时对不同Android版本之间的兼容性与适配的方式和方法。Android各个版本的不同也就是api的发生了一些改变,具体的api变动我将用表格来呈现,并且以1.6为最基础的版本。
版本 | Api等级 | 部分重要差异 |
1.6 | 4 | 基础 |
2.0 | 5 | 蓝牙api添加,Account Manager添加,新Contacts APi,Camera各个模式的设置,缩放api,新的缩微图 API,MotionEvent 支持3点触摸,KeyEvent 实现长按键,闹钟等程序唤醒设备,模拟HOME,MENU,BACK物理键。 |
2.0.1 | 6 | manifest里面宣布了filter,蓝牙拒绝启动蓝牙等api改变,修复错误getCallingPackage()正确的报告包名, 而不是进程名. |
2.1 | 7 | 动态桌面api添加View的一些api重新设计,webkit api变动 |
2.2 | 8 | 可以Sd卡上安装程序也可以迁移,支持flash12.1,音乐管理 |
2.3 | 9 | 增加SipManager类方便Sip和Voip的开发,陀螺仪旋转常量,线性加速器,气压计支持。多摄像头支持,camera api 获取焦距,焦距范围等,混音支持,支持长时间运行http下载。可以保证在手机重启后仍然重试下载等操作,整个过程在后台执行。 |
2.3.3 | 10 | 上一版本api的一些改进 |
3.0 | 11 | 可供平板电脑使用 ,新增Fragments,Action Bar,系统剪切板加强,拖拽,更多的appWidget,新增的Notification API,蓝牙api增强,新增了一些动画框架,一些ui框架AdapterViewAnimator AdapterViewFlipper 等。 |
3.1 | 12 | 支持外部键盘和鼠标等设备,FLAC音频播放支持 |
3.2 | 13 | |
4.0 | 14 | 统一了手机和平板电脑使用的系统,Gmail离线搜索,与其他第三方微博、博客类应用程序的无缝连接,增加截图功能,脸部识别进行锁屏,流量监控功能,增加支持硬件加速的功能,Wi-Fi直连功能 |
4.0.3 | 15 | 一些bug的修复 |
4.1 | 16 | 基于Android 4.0改善,大幅改变用户界面设计,恶意软件的保护措施,强化ASLR |
更详细的变动见:
维基百科:
http://zh.wikipedia.org/wiki/Android%E6%AD%B7%E5%8F%B2%E7%89%88%E6%9C%AC
Csdn文章:
http://blog.csdn.net/lijun952048910/article/details/7980562
从上面的表格可以大致看出android的发展经历了很多的变动,包括后面为平板的适应做出考虑的一些大范围改变。
进一步分析:
为了支持更多的手机设备,和程序的健壮性,可重构性等的考虑,建立项目的时候应该尽可能的使用高的版本的api开发,对于一些使用低版本手机的用户,可以通过在代码实现中判断sdk版本来做相应的的调整。如果使用低版本的api开发,一些api貌似有效实际上在高版本中未必能够执行成功,而且一些高版本中才具有的功能,用低版本的api开发是不可能实现的。并且随着时间的推移,用户群体的手机系统版本主键向高版本移动,势必会将上面的不利因素扩大。
结论:
1. 为了支持更更多的用户,应该尽量使用高版本的api去开发,对于低版本手机的用户,可以通过在代码实现中判断sdk版本来做相应的调整
2 对市面上的手机系统的分布有所考虑。
3. api版本的bug和稳定性考虑。
4. 团队开发经验,以及原有成果的利用考虑。
5.项目具体需求考虑。
6.目标设备考虑。