(转 华清远见)
本人一直致力于嵌入式相关知识和技术在中国大陆地区的技术传播及嵌入式产品及移动设备的系统和应用程序开发,近两年主要专注于3G技术领域,重点是研究Android应用开发及系统核心代码及Android开发人才培养体系的建设。作为华清远见3G学院(www.3g-edu.org)的职业讲师,我在面试学员的过程中经常会被反复问到一些问题,这些问题可能是大部分Android开发初学者想了解的,所以抽时间整理了一下,短文一篇,希望可以对大家在Android开发入门学习的阶段有所帮助,更希望可以帮助更多的朋友进一步了解所学的行业,明确职业发展的方向,欢迎拍砖。
关于Android
相信大家对Android的发展历史多少都有一些了解, Android曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞速发展的道路。经过这几年的发展,它已经发展成了一个平台、一个生态体系。现在Android在移动领域已经得到了广泛的应用。根据Google于2011年6月份公布的数字,现在每天激活的Android设备高达50万台,比5月份的数据增加了10万台!Google还透露目前已经与36家OEM厂商和215家运营商合作,共激活了超过1亿台Android设备。
相比于Symbian的日落西山,以及苹果的封闭、Windows Phone的前途未卜,Android无疑代表了当前行业发展的主流趋势:开放平台取代了封闭平台。让参与者均能通过自己的努力而获益。
从2008年9月公布1.0版本以来,经过近三年的跨越式发展,现在Android已经发展到了3.x版本,这是一个针对平板电脑而做了大量优化的版本,包括对更大屏幕的支持的类库、多任务优化等。目前市场上占主流的还是2.2版本,当然,相信随着时间的推移,2.3及后续版本会得到越来越多的设备的支持。
学习Android有前途么?
由于Android是近几年才开始起步的,所以有很多朋友在关注华清远见3G Android系统开发课程时,也总是会有这样的疑问。我一直跟带着这种疑问的朋友说,回答这个问题,有几个关键点:第一、这个市场是否足够大(或者能发展到足够大),这点我相信大家对于移动设备的现状有足够的了解,对其未来的发展不会有什么异议;其次是你所从事的领域是否处于上升通道上?身处一个上升的通道,个人只要付出一定的努力,这个行业都会带着你往上走,相反,如果处于一个没落的行业,个人再努力,可能都赶不上整个行业坠落的速度。Android这几年的发展可谓有目共睹,就像前面所说,每天的设备激活数目就达到了50万台;其三,是否有足够多的大公司参与其中,或者是否成就了一些公司。行业的发展,离不开业内大公司的支持,或者,是否有公司在该领域得到了长足的发展。处于这个行业的大公司,除了Google本身外,也成就了一些公司,例如Motorola移动、HTC,前者借Android咸鱼翻身,后者借Android成了市值超越Nokia的公司。行业的发展如此红火,那么作为开发者,是否可以从中获益呢?我们可以从“Android工程师一年经验月薪8000元:http://www.3g-edu.org/news/3G-45.htm”这则新闻来看这个行业的开发者的情况,由此可以看出,这个行业的从业人员现在有多抢手。
目前国内Android开发行业市场现状如何?
目前国内的Android开发还是主要以应用开发为主,主要分成3类:为企业开发应用、开发通用应用(放到Android Market或者其他App Market销售)以及游戏开发(放到Android Market或者其他App Market销售)。第一类开发者一般身处规模较大的公司,这些公司主要为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。除了根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。第二类开发者,一般处于创业型公司或者是独立开发者,他们的盈利方式主要是2种:为国外公司进行外包开发,或者通过Google的移动广告(AdMob)通过广告点击分成。而理论上的通过付费下载的形式来盈利的,现在国内鲜见成功者。第三类开发者,目前和第二类开发者类似。下图是开发者提交的应用和游戏的数目所占的比例图,从中也可以看出应用开发数目远超游戏开发。(数据来源:创新工厂)
什么样的人可以学Android?
相对于其他移动开发平台,因为Android的(应用)开发采用了Java语言,所以,它的学习曲线相对比较平缓。对于那些有一些编程语言(如C/C++/Java等)训练的学生,都可以考虑学习Android应用开发。当然,如果你希望从事Android游戏开发,那么,最好能在高数、离散数学甚至计算机图形学等方面有比较扎实的基础。如果后续想往底层开发如系统移植、驱动开发等方向发展,或者为了更好地理解Android 应用架构体系,那么,具备一定的操作系统知识是必要的,当然,并不需要你对操作系统有多精通,而是对其基本原理有一定了解即可。
如何学习Android开发?
上面是Android的体系架构图,自上而下分别为应用层、应用框架、类库和Alvik运行时环境以及Linux内核。一般来说,我们想从事Android开发,可以从应用开发作为切入点,逐渐熟悉其整个体系,并慢慢往其底层渗透,从而能做到软硬兼备,华清远见3G学院(www.3g-edu.org)的Android系统开发班的课程设置就充分考虑到了这一点,既涉及到应用开发的透彻掌握,又帮助大家在系统开发层面上做好充分的准备。而从学习的路线图上来说,先熟悉Java SE编程,能比较熟练的使用Java语言进行编程,熟悉Java语言语法特点,熟悉Java IO、Java线程、网络编程、XML处理等。另外,因为很多的Android应用在运行时都需要去访问网站服务器,因此,熟悉一种网络编程语言也是必要的。无论是从学习的方便性还是市场占有情况来说,使用JSP/Servlet都是不二的选择,另外,在这个阶段也顺便学习一下SQL语法和熟悉一种SQL数据库,以方便后续Android开发中进行SQLite数据库开发。学习完这些课程后,就可以开始进行Android的应用开发的学习,例如Android中的UI组件、基本组件、数据存储、传感器、图形图像处理、多媒体处理、游戏开发等。为了更好地进行应用编程,可以有选择的对其Lib类库进行分析,以加深对其工作机制的理解。再往下,就是操作系统层级了,这里应该要对Linux操作系统进行学习,熟悉其内核和运行原理,熟悉ARM体系架构以及常用指令,并熟悉驱动的编写方式,掌握其移植方法等。 |