深入Android 【一】 —— 序及开篇
序
序
携来百侣曾游,忆往昔峥嵘岁月稠。 -- 《沁园春·长沙》
对于Android,我也算是老人了,所谓, 有文有真想。正由于这段玩票经历,使得我在毕业后,鬼使神差的成为移动平台的一名码工,再次有机会放肆的拥抱Android。
2010开年,手上突然有了一把闲散时间,有机会进一步总结和学习Android。于是想再一次为Android写一系列的东西,这些东西来自于一些开发经验,对源码的学习和对Android的浅薄认识,也算是鞭笞自己学习的一种手段。
其下所有内容,预计有十数篇,抑或更多。基本和技术相关,也许会配有一些其他相关比较闲淡的话题。可能会有一些具象实例,但更多的可能是自己的一些理解和认知。所有一切,源自于妄自挖掘,难免有疏漏或误解,观者淡定。
以此为序,有心者,望共勉。
Android简史
人生若只初识,何事秋风悲画扇。 -- 《木兰辞》
要说当今移动平台的当红辣子鸡,Android说它是第二,也许没有别家敢认这个第一(好吧,iPhone,有意见就说...)。了解Android开发平台的过去和现状,除了往下看,另有便捷的方式就是在WikiPedia中键入 Android,在这里,特此鸣谢GFW友情放生。
诞生
早在2005年7月,Google舞动着手中的美刀,收下了由 Andy Rubin(传说中的Android之父...)等人创立的一家小公司,他们当时做的就是基于Linux内核的手机操作系统,也就是小时候的Android。经过Google多年打磨,Android在07年末,正二八经的粉墨登场开门接客。
自打一出生,Android便被钉板在富二代的角色上,不仅是因为老爹有钱的令人发指,也是因为其后有一帮金光闪耀的叔伯们保驾护航。这个叔伯群,便是响当当的开放手机联盟 OHA(Open Handset Alliance)。这个联盟涵盖了中国移动、T-Mobile、Sprint这样的移动运营商,也包括HTC、Motolora、三星这些的手机制造商,同时还有以Google为代表的手机软件商,以Inter、Nvidia为标志的底层硬件厂商和 Astonishing Tribe这样的商业运作公司(这公司是啥我也不晓得...)。作为后援团,他们理论上的任务,是各尽其长,全力捧红Android,实际上的任务是齐心协力,借Android东风赚一个盆钵满响。
当然,Android自所以被万众瞩目一炮走红,不仅仅是丫实在太有背景,同时,它也有这太多的新鲜的概念。Android是一个开源的平台(恩,真正的全面开源,是在发布后很久以后了...),它给那些捂着自家平台源码当宝的竞争对手们一记当头棒喝。Android自行研发了一套Java虚拟机,当时仅提供Java API的支持(NDK是更久以后的事情了...),号称为专为高端智能设计。Android开发环境支持所有主流操作系统平台,包括Windows,Linux,Mac,即便到今天,在手机开发中也是极其罕见的。Android的带头人Google,本身是做网络起家,Android内嵌大量Google网络应用,听上去就显得很酷。这所有的一切,共同造就了Android那鹤立鸡群,不染风尘的少侠形象。
造势
推出伊始,Google还有一个很震撼的推广举动,就是举行所谓的Android程序挑战赛(Android Developer Challenge, ADC)。整个比赛分成两场,第一场(ADC1)比赛,在没有任何真机问世,SDK还是个雏形的状况下,便鸣金开锣了。
比赛套路是无差别的群殴,基本概念是无论你来自何方(还是要满足美国法律要求和避嫌要求的),无论你想做些什么,也不管你是光杆司令还是流氓团伙,只要提交一个能在模拟器上跑起来的程序,就可参赛。而比赛只是对你作品进行参观评比,作品的所有权依然放在开发者的口袋中。
当然,这还不算什么创新,NB的是无比丰厚的奖金,整个ADC的奖金高达1千万美刀,每场各半,基本上首轮入围奖(前50)已经超越了那时候一般程序比赛的头名奖金,这对很多小公司和个人而言,无疑是具有很强吸引力的。于是,各路打酱油好手蜂拥而至,各论坛、博客、网站也七嘴八舌的讨论开来,一时间,满城风雨。
ADC1我也很厚颜无耻的参加了,结果当然可以预想,一毛钱都没摸上。回想整个过程,差距最大的并不是在技术上,而是认知上,我们玩的产品是人家几年前玩剩下的,说创新只是一抹笑谈。
当时觉着,Google太NB了,ADC这种车马未动粮草先行的招太华丽了,就这动静,不论比出来个啥结果,这1千万刀也掏值了。但时过境迁,现在回头来想,也许一切并不是看上去那么美。由于没有扎扎实实的真机摆出来,大家普遍抱着一种玩票的心理,真的敢不顾一切舍下身家性命押宝在Android上的尽在少数,这就锻造了Android平台很长一段时间的只见雷不见雨的局面。而等喧嚣过后,很多人热情消退,Google真端出Android真机的时候,还需要重新热场再来一次,也许,真的有些得不偿失。
困境
所有的东西现在来说,都是事后诸葛亮,只能听个响不能当个真。而真实的状况是ADC1很快进入囧境,由于架构设计上的种种原因,Google花了比预想多的多的时间做Android的优化工作,ADC1比赛被迫不断延期,彻底沦为懒婆娘的裹脚布。各路曾热捧Android的媒体,也不失时机的倒戈,亲手在自己画上的感叹号后面,重重画上了个大大的问号。
祸不单行,同样是由于Android的性能问题,虽然各路高手把Android移植到了不同的手机平台上,但传说中的GPhone一直难产中,使得人们不免有了胎死腹中的猜测。
与此同时,其他对手可一点也没闲着。iPhone很快宣布开放SDK,以此来勾引纯情的开发人员。Symbian被Nokia彻底收购,成为Nokia的自留地,开源计划也很快浮出水面。所有景象,对Android而言都犹如梦魇。
破茧
所有一切困境,都在G1发布后,渐渐消散了。2008年10月,第一款搭配Android平台的真机,搭载着无限光荣与梦想的HTC Dream正式发售,这就是注定要载入史册的G1。虽然比之当时绝代风华的iPhone,粗陋的G1犹如村姑遇上公主一般,但无论如何,G1让人们真真切切的看到了Android。这就犹如你家买的跳票N久的期房,终于见着了个毛胚房,那种感觉,除了踏实,找不到更适合的词汇了。
好事当然也会成双,G1它不是一个人在战斗。ADC1总算是落下帷幕,Android Market的也顺理成章的破茧而出,早期的应用,大都来自于ADC1的贡献。
Android也结束了伪开源的历史旅程,正式开发SDK的源码实现,搭配的是Apache的License,这种坦诚相见的感觉看上去很不错。
忠心耿耿的HTC,更是再接再励,在G1后,陆续发布了Magic(G2)和Hero(G3)。尤其是Hero的现身,惹得一阵小惊艳,HTC为Hero搭配的是基于Android改造UI的Sense系统,以华丽的界面风格赚足了眼球,也创了改造Android的先河。
在HTC高歌猛进的同时,猫在螳螂后的一群黄雀,也敌在动我也动了。摩托罗拉,三星,LG,华为,戴尔,联想等一干手机厂商纷纷跟进,各式各样的Android蜂拥而至。与此同时,其他嵌入式厂商也推陈出新,爱可视(Archos)发布了基于Android的平板设备,明基的Android上网本也是箭在弦上,而基于Android的手持电子书阅读设备也不断的被推出,庞大的Android联盟初现峥嵘。
为了避免同质化,各个厂商纷纷对Android进行的改造,摩托罗拉推出了Cliq,打得是SNS整合牌,三星的新系统也是被广泛期待,而中移动的OMS丑媳妇也要见婆娘了,打着整合移动服务牌@_@的OMS,以丑陋的外貌、低下的SDK版本和雷死人不偿命的宣传文案(绝口不提Android,只说自己做了大量很NB的工作,其实...,哎,咋就那么小家子气呢...)也算是招来大量眼球。
而还是没能耐住寂寞的Google,联手HTC,一同推出了至今只为止最重量级的Android手机:Nexus One。江湖有云:天下武功,无快不破。搭载了全新的Android 2.1,1G的CPU,史上最清晰的手机屏幕的Nexus One,快的是一塌糊涂迅雷不掩耳盗铃小叮当,在单机层面,第一次使得Android手机与iPhone掰手腕的能力(之前与iPhone的比较,都需要依靠集团力量,三英战吕布...)。
在各家厂商努力的同时,Android本身也没有闲着,版本从1.1,一步步进阶到了2.1,SDK的升级,伴随着大量性能、接口的改进,和功能的丰富,Android变得越来越快,越来越省电,越来越丰富,越来越多Google服务被嵌入@_@。由于Android SDK是基于Java的,即便虚拟机做的很是NB,在某些情况下,性能也是无法与原生的C++代码相提并论,于是,从1.5版起,除了SDK,Android还拥有了NDK(Native Develop Kit),它提供了一些C++的库和编译环境(库是真的很少...),开发人员可以基于C++写底层库,用Java写上层逻辑,通过混编的方式,兼得鱼和熊掌。
Android Market的发展也甚为迅猛,虽然和其鼻祖App Store相比,应用的规模和盈利能力还显得比较幼齿,但其涨势凶猛,发展趋势远胜于前辈。国内一些比较著名的手机软件,也纷纷拥有了Android版本的小弟,比如 网易有道的出品的 有道词典Android版(好吧,这是在插播广告,欢迎大家进行围观并提宝贵意见...)。
起飞
种种迹象表明,2010,也许就是姗姗来迟的Android元年。三星,moto,LG,HTC等多家手机制造厂商,都为2010年将推出的半数以上的手机搭配了Android。在国内,移动的OPhone,丑媳妇要正式揭开盖头了,惨烈是惨烈了一点,但聊胜于无,除了水货,2010毕竟至少多了条购买Android手机的道路。
软件开发方面,大家也从抱着双臂冷眼旁观的状态,进入到了一种伺机而动的战略准备阶段。前不久召开的moto开发者大会,惊现国内各领域的公司,试水开始,可见一斑。国内各个山寨的Market的,也越来越货源充足,下载量稳步上升,升温,就在当下。
而随着G2为首的Android水机价格火速下调,身边路边地铁边,可以看到越来越多的人,把玩着各式各样的Android手机,状况尤为喜人。
所以,2010,如果你有心,就做好准备吧。
深入Android 【一】 —— 序及开篇 序相关推荐
- 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件: ⑴有且仅有一个结点没有前驱 ...
- python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)
树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...
- NC45实现二叉树先序、中序和后序遍历
文章目录 解法1:Morris 算法 题目地址 如标题,实现二叉树的三序遍历. 例 输入:1, 2, 3 输出:[[1, 2, 3], [2, 1, 3], [2, 3, 1]] 输出 ...
- 二叉树深度优先 java_二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历) java实现...
二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的.对于二叉树,有深度遍历和广度遍历,深度遍历有前序.中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历.由于树的 ...
- 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)
手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...
- 把一个数组的值存入二叉树中,然后利用前序、中序、后序3种方式进行遍历(完整代码以及运行结果)(Java)
把一个数组的值存入二叉树中,然后利用前序.中序.后序3种方式进行遍历(完整代码以及运行结果) 在最近的面试过程中,听说有小伙伴被面试官要求创建二叉树,然后对该二叉树进行遍历,感觉这一直以来都是一个大家 ...
- 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...
- php循环方法实现先序、中序、后序遍历二叉树
二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree). <?phpnam ...
- 给定二叉树先序、中序遍历序列,求后序遍历
给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列. 输入描述: 输入为一行. 两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔.保证数据合法 输出描述: 对应输 ...
最新文章
- QuarkXPress 2020中文版
- jsp的flash小例子
- python温度转换代码分析_Python温度转换实例分析
- 虚拟服务器 端口管理,Apache服务配置虚拟主机(基于域名、端口、IP地址)与简单访问权限管理...
- linux c解析配置文件,linux中C的配置文件
- node path html模块,深入理解node.js之path模块
- python len函数_你需要了解的最重要的Python概念
- asp.net控件开发基础二
- 基于ARM的嵌入式Linux应用程序开发
- 机器学习——k邻近算法(kNN)
- IDEA使用搜狗输入法变为繁体如何办???
- idea好用的一些设置
- 第十四周助教心得体会
- 要生存,先做一株小草
- Vim 增加man快捷方式
- 如何利用eclipse把 class文件打包成java文件
- linux 文件 复制 工具栏,Linux(Ubuntu)光盘镜像文件制作及使用攻略
- qt tablewidget中item添加背景色
- 微信chooseImage,getLocalImgData调取相机拍照,获取图片base64
- Orc-Battle
热门文章
- eCryptfs,文件系统级加密,在登出时自动为文件加密。通过挂载文件解密和卸载文件加密的方式保护文件
- Mysql 批量插入大量数据的两种方案以及优缺点(分别是 5W 条数据和 10W 条数据)
- 我是如何做到花8000元拔智齿的
- 阿里云centos6.9 修改yum安装镜像源
- 2022年最常见的Python面试题答案
- 快速掌握AsyncIO---新手入门
- 01.reac的基础和组件
- python 利用百度AI实现文字识别(cv2 + aip module)
- 挨打的狗去咬鸡,拿别人出气
- DC-4渗透靶机详解