爱Android更要懂Android——李宁解析学好Android两大法宝

[背景资料]最近Android比较火,无论是摩托罗拉搭载Android 2.2准备咸鱼翻身,还是Android Market年底将在台湾开市……这些消息足以让人们为之振奋。但当人们看到Android的外表光鲜之时,更要注意到其潜在内涵,尤其对于广大开发者,一味盲目地崇拜并扎入其中并不实为理智之举。本期,我们为您邀请到一位与代码打了15年交道的李宁,以其亲身经历和开发经验来为广大开发者提出鉴言和忠告。

热恋还在Android:写心得、出书投入十二分精神

提到移动应用开发,早在2003年李宁就尝试过使用Symbian系统开发软件,但当他开发完成准备安装在手机上才发现,塞班系统安装程序是需要购买签名,一年需要几百至上千美元费用,这对于仅作娱乐考虑的李宁来说,不太现实,移动开发也就此搁置。到了2007年Google发布Android,这在当时也没能引起他太多注意,直到2008年底,世界上第一部支持Android的手机G1推出,这才让李宁感觉到Android的猛烈攻势,于是,他开始尝试Android软件开发,虽然程序也需要签名,但比较自由,在配置文件上配置即可,不需要购买。

关于智能手机操作系统,李宁认为目前是第二代智能操作系统时代,以塞班为首的第一代智能手机操作系统,面临着屏幕小影响软件表现、系统本身过于臃肿(Symbian的源代码超过2000万行,相当于Windows XP的源代码量)、用户体验不足等诸多弊端,现在新出的手机屏幕分辨率多在320*480之上,Android、iPhone和Windows Phone 7都支持大分辨率,还支持传感器,如重力、光学传感等。同时传统的塞班代码积累太多,2000多万的代码量在修改和加入新功能上比较困难,不太适合开发者操作,而且在操作方式上并没有带来更好的用户体验。如果塞班不行,要有一个操作系统来取代的话,目前Android具有绝对优势。虽然Android存在版本太多的问题,但Google承诺,Android 3.0之后的版本将一年升级一次,虽然这样做放缓了Android的升级速度,但却给手机硬件厂商以及开发者留有足够的时间来适应新的系统,从而也在很大程度上解决了Android版本众多的问题。据Google宣称,将禁止第三方对Android 3.0及以上版进行扩展(如HTC Sense就是一种Android扩展),这样可以使Android更加统一,从而可大大提升用户体验。

李宁看到,由于Android的支持厂商众多,从低端到高端机型都有,因此,他决定从Android入手,挖掘在移动领域属于他的第一批宝藏。由于从事Android的时间比较早,也算是国内第一批Android开发人员,经历了Android的几乎所有的版本的变迁,亲身体会了Android由弱变强的过程。为了纪念首次进入移动领域以及Android,在2009年下半年开始,李宁用了四个月多的时间将他的经验写成了一本书《Android/OPhone开发完全讲义》,该书在上市近一个月以来,销售排名一直在计算机类前10的位置,取得了不错的成绩。李宁还告诉我们,这本书的版权目前已卖给台湾的一家出版社,估计二个月后将会在台湾市场销售。李宁还写了一本与Android相关的书籍:《人人都玩开心网:Ext JS + Android + SSH整合开发Web与移动SNS》。

《Android/OPhone开发完全讲义》 《人人都玩开心网:Ext JS + Android + SSH整合开发Web与移动SNS》

在学习Android的过程中,写书可能只是一部分,李宁还开发了一系列软件,包括多功能日历、乐博Android客户端(用户在Android手机上管理微博)等。“乐博Android客户端”这款软件的开发,源于国内外有很多微博网站,而很多人在不同的微博都有帐号,这会在同步管理上带来麻烦。因此,乐博Android客户端就是帮助用户维护这些微博,并能实现同步发送。

“乐博Android客户端 0.9”软件界面
“乐博Android客户端 0.9”软件界面
“乐博Android客户端 1.0”软件开发中

2010年初李宁完成了第一个版本0.9版的开发,目前1.0版正在开发中,1.0版将基于Android 2.1开发,并完善多种功能。比如将支持超过10种微博(包括新浪、搜狐、Follow5、Twitter等),除了具有微博客户端的基本功能(发布、浏览、评论、转发微博)外,还支持同步多种微博、自动翻译(将微博内容翻译成其他语言)、图像编辑(支持多种图像效果)、辅助输入(输入表情字符、节日祝贺等)、快速发布(通过手机桌面上的功能图标可以迅速调用输入微博的界面)等功能。在未来的版本中还支持将指定的微博生成电子书、更高级的辅助输入功能。

对于这款软件,还要提及的是其图片处理功能,因为一条微博只允许发布一张图片,而李宁通过对拍照效果进行处理,对照片的后期处理,通过软件将多张照片通过横竖合并在一张图上等特殊效果处理,从而实现一条微博可以发布多张图片的效果。相信这个功能会让很多围脖为此欢呼。

软件开发完成,李宁打算将其发布在中国移动Mobile Market应用商场,之前也发布过但因移动MM不支持联网应用而被驳回,所以希望到时可以通过审核并顺利上架。

爱要理智:爱Android更要懂Android

我们关注李宁对Android投入的爱是否有所回报,他告诉我们并未直接带来收益,不过已经从著作及参赛奖项中获得一定回报。对于移动MM,他认为MM是目前国内最大的手机软件商店,但收费软件和免费软件的下载量差距很大,这可能是因为国人都不习惯花钱买软件所造成的,希望MM可以为开发人员提供更多的赢利机会。通过某些服务而不是卖软件来赢利,例如,开放通信接口、植入性广告、专业广告等。对于软件,产品销售是一方面,后期服务也很关键。以移动的角度看,可以进行培训,培养更多的Android人才,毕竟现在靠软件卖钱的时代已经快过去了(直接向用户收费也不符合互联网的精神),免费才是王道。而通过开发免费软件赚钱的人也不在少数,比如Foxmail作者张小龙,当Foxmail用户达到几千万时,软件也自然拥有巨大的市场价值,最终以2000万卖出;再比如来电通的作者苏志宏也是一个例子。

在这个全球热恋Android的时代,李宁不只爱着Android,更懂得Android,这对于很多痴迷着Android的开发者来说,尤为重要。李宁认为,学好Android有两大法宝:Android源代码(包括Java和C/C++的源代码)和Linux。他把新入门的新手分为二种类型,一种是技术新手,一种是Android新手。

对于技术新手,李宁奉劝他们应该先从Java学起,至少需要几个月甚至半年的熟悉这种语言,这是不可缺少的基本功练习。对于现在有的人急于求成,自认为Java不熟练但Android却很精通,李宁用“拿着驾照但却不会开车的马路杀手”来形容这部分人。

当技术新手对Java有了一定掌握,并独自编写大量的代码,对于一般的技术领域能驾轻就熟时,就可以开始Android的学习了,这时候的技术新手才能晋升为Android新手。而对于Android新手,一般一、二天就能够学会使用Android编写程序,但要深入研究就需要些功夫。因为Android是开源的,所以首先要研究Android的源代码,虽然关于Android的书在国内已经有几十本了,但书籍只能引导入门却不能将你带到一定高度,如果要深入研究就必须研究源代码,通过源代码才能真正了解Android的内部构造。

李宁认为:“开发是一件很痛苦的事,但也是一件很快乐的事。就像一杯咖啡,虽然喝着感觉很苦,但随后而来的却是咖啡的香甜。”当然,这里所说的痛苦并非开发本身,而是在开发过程中遇到无法解决的问题时,如果时间要求再紧,会更加郁闷。李宁记得2年前刚接触Android时,虽然凭着多年的开发经验,应付一般的技术不成问题,但仍然还有很多Android技术问题无法得到解决。那时国内、外关于Android的技术论坛并不多,而且资源匮乏,除了Android的官方文档外,最大的资源就是Android的源代码,而任何与Android相关的文档(也包括官方文档)永远只能是入门或API列表,永远不能触及实质的东西。因此,获得我所需要的东西的唯一途径就是直接查阅Android的源代码(幸好源代码很容易从网上获得)。所以,要学好Android最好的方法,也是最快的捷径,就是尽可能理解Android的源代码。同时,鉴于Android是基于Linux内核的,所以学习Linux的相应API以及各种操作也是十分必要的。这就好比如果想要学习Windows Mobile就多研究下Windows的道理是一样的。

当以上几点都能够达到基本上就是高手了。当我们问及李宁目前是处于哪个阶段时,他很谦虚地告诉我们,正处在源代码阶段,他收集了1.7G的源代码,正在仔细研究中。


更多相关文章

  1. 有关Android手机软件详细分析
  2. Android的风暴前夕
  3. 深入解读Linux与Android的相互关系
  4. android是什么?学 android开发能做什么?
  5. Android技术人才前途无量
  6. android学习日记01-搭配开发环境
  7. Android(安卓)SDK各版本源码
  8. Android安卓51个开源代码
  9. Android安卓51个开源代码

随机推荐

  1. android 权限管理和签名 实现静默卸载
  2. Android Handler(三)
  3. Android 获取assets的绝对路径
  4. Android之ViewPager自动循环播放(轮播)效果
  5. Android 滤镜效果
  6. Android 计时与倒计时
  7. 【android】launcher图标自动生成、点9图
  8. Android复习(六)
  9. 零成本实现Android/iOS自动化测试:基于App
  10. android开发中build.gradle文件详解