随着移动互联网和智能终端设备的发展,移动应用开发也随之逐渐升温,Android开发的先驱者杨丰盛老师为大家讲解Android入门、其他开发平台转向Android平台以及Android开发中一些常见问题。 
        杨丰盛,国内Android开发的先驱者,精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。曾经参与过《三国群英传说》、《大航海传奇》、《养成计划》等游戏的开发,2007年荣获中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联合会国际认证。著有《Android应用开发揭秘》等热销技术书籍。
1、我们知道Android是使用Java语言进行应用开发的,对于一个入门者,想要开发Android应用,对Java知识有哪些要求?需要哪些知识储备?
答:对于该问题确实有不少人咨询过,始终有一点可以肯定,那就是Java基础越好,学习Android应用开发就越容易,越轻松!没有Java基础也可以同时学习Java和Android(这需要根据自身情况来看)。因为Android应用程序使用Java语言来编写,使用JDK中的Javac编译器进行编译,从而产生Java字节码(.class文件)。然后,这些文件还要被转化成Android的.dex文件,这部分转换工作包括一些优化和压缩等技术,由Dalvik虚拟机来完成,应用开发人员只需要使用Android提供的API来完应用程序编写即可;Android 引用了很大一部分的Java API(很多都是编写Java程序经常使用的),但是也省略了一些,比如界面部分(Java.awt包)等,所以在学习Java基础时就可以针对Android所引入的这部分来学习,概括一下就是:Java标准语法规则、Java提供的一些工具内库。另外,Android的界面布局使用xml语法规则,所以有必要了解一下xml相关的知识。
2、已经有一定经验的Java开发者,想要走进Android进行应用或者游戏的开发,需要重新学习哪些知识?
答:Android引入了大部分Java API及其规则,其实在Android平台中很多应用程序功能的实现是既可以使用标准的Java API,也可以使用Android API,比如网络通信、I/O模块等都能同时兼容,但是Android也增加了一部分专门使用于Android的API,比如图形图形,IPC机制等。那么对于有Java经验的开发者所要学习就主要在Android所新增这部分API及其工作原理。其实我在写《Android应用开发揭秘》时就考虑了这部分有一定Java经验的开发者,同时对应用和游戏进行了分别讲解,几乎介绍了Android平台所新增的API的使用,另外该书还特别适用于有一定J2ME经验的开发者。
3、之前进行.NET或者PHP开发的程序员转向Android开发有什么快速的方法吗?
答:这个问题就好比我已经可以驾驶小桥车了,该如何去驾驶大客车或者大货车呢?因此需要学习的就是大客车或者大货车与小桥车之间的不同即可。Android是一个操作系统,因此其应用程序编写的规则、工作原理和机制都需要符合其系统要求,所以这部分开发者应该从该平台不同的规则、构架、原理和机制出发,学习Android所提供的API。对于PHP转Android的稍微麻烦一点儿,需要首先学习面向对象的编程(学习Java)。
4、Android开发是针对移动设备的,与传统的软件开发相比有哪些不一样的地方需要我们注意?
答:这个问题,我觉得用“灵活”两个字来回答再好不过了,传统的软件开发受到诸多因素的影响,比如:设备、API限制等,而Android本身就是一个开放源码的操作系统,这样就使得开发者可以很轻松的通过源码来解决很多传统软件开发中遇到的非常痛苦的问题。说实话,我在当初接触Android的时候,第一感觉就是这个系统太灵活了,是一个适合开发者根据自己的思路来创新的平台,比如:对于某些功能的实现,他并没有限定开发者必须使用某种方式或者某个API来完成,而是让开发者自由的发挥,这就是与传统软件开发最大的不同,但是需要注意,在开发过程中,我们要始终保持不违背Android系统的权限、机制和原则。
5、能不能为Android开发的初学者推荐一条学习路线?在这条线路中有哪些重点需要关注?
答:对于一个初学者首先应该学习Java基础,熟悉Java这种编程语言,这部分比较重要将直接关系到学习Android的时间进度,当你能够独立写出部分Java程序时,可以开始进入Android的学习了,进入Android的学习应该首先掌握Android的系统结构,应用程序框架,应用程序必须的各个模块,当然这部分内容可以直接参考官方提供的开发入门文档,当入门之后可以开始深入Android各个模块进行学习,了解各模块的功能、机制,从而对其提供的API接口进行熟练且灵活的运用。对于Android的学习流程,大家可以参考最受初中级读者欢迎的《Android应用开发揭秘》,写书时就征求了大量初级开发者的意见,因此比较适合初学者,该书目前也被台湾佳魁资讯有限公司引入,即将出版繁体版,同时也感谢51CTO及广大读者的支持与关注。
6、这样的路线走下来大概需要多长时间?从事应用开发和游戏开发的学习路线和重点是否会有所不同?
答:时间的问题就需要根据个人的不同情况来衡量,一般对于没有任何Java基础的开发者来说至少需要2月以上来学习Java,因为这也将直接影响后期对Android的学习,有了Java基础,对于Android的学习就简单很多了,几天时间都能完成Android入门。入门简单,但是入门之后的深入需要一个长期的经验积累。对于应用方向的开发者需要重点掌握Android的各个组件(包括各个组件的组合运用)、网络通信、音频和视频这些模块,对于游戏开发方向则应该把重点放在图形图像方面包括2D和3D(Opengl ES)渲染。
7、Android的应用程序本身与传统Java程序有什么不同之处?搭配Eclipse和ADT,开发效率如何?答:首先从运行环境层次来分析,Java程序在拥有Java虚拟机的情况下就能运行,而Android应用程序不仅需要Dalvik虚拟机来解释,而且需要很多系统组件及API的支持。另外每个Android应用程序都是相对独立的,不能在一个应用程序中调用另一个应用程序。因此这些都是传统Java程序开发者需要注意的地方,Java编程的IDE和工具确实比较多,但是Google选择了Eclipse并提供了基于Eclipse的插件ADT使得应用程序的开发变得非常方便,相信大家都知道,开发应用最困难的就是Debug了吧,在Android平台除了Eclipse本身的调试工具之外,ADT还提供了众多辅助调试的功能,比如:ddms,模拟器工具等。同时,如果我们的应用程序需要使用NDK来开发原生程序,那么Eclipse也可以很方便的集成C\C++开发环境等,总的说来使用Eclipse和ADT来开发应用程序是个非常完美的组合,当然不排除可以使用其他的工具来开发!
8、能不能从项目管理的角度为我们介绍一下,一个Android项目的具体开发流程,在移动软件的项目开发中需要注意哪些问题?
答:这个问题比较大了,那么我就自己开发Android项目的流程来说说,首先Android目前的应用程序虽然不像iPhone上那么多,但是其项目的同质化越来越严重,因此在最初对项目的定义阶段非常重要,将直接影响产品的生命周期,客户(玩家)需要一个独特的,新颖的、便于操作的产品,这都是我们在定义项目的过程中需要考虑的,在确定了项目就需要对项目进行规划、执行和跟踪,该过程主要确定产品的开发周期、涉及技术人员,技术问题如何来避免和解决,在开发过程中叶需要定期的对项目进行测试,包括测试其视觉感、体验感、兼容性等等,对发现的问题及时的进行处理。最后项目开发完成,测试通过之后我们的项目其实并没有完,还有更加重要的工作要做,收集客户反馈的信息(可以在开发中嵌入相关程序或其他),对项目进行更新及其完善。
9、目前除了Android SDK,还有NDK。NDK主要应用在哪类项目的开发?是否值得我们关注和学习?
答,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。原生SDK(NDK)的可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。NDK主要用于一些具有大量逻辑计算和高性能的图像渲染的工作,比如我们要开发款大型的3D游戏,那么如果使用Android SDK通过Java来开发,速度和性能上很难满足我们的要求,这是就可以使用NDK通过C\C++来开发原生的程序来处理这些渲染,可以极大的提高我们游戏的性能。所以我们很有必要对NDK进行学习。
10、最后,有哪些比较好的Android社区向开发者推荐?答:随着Android的发布,一个又一个的Android技术社区诞生了,甚至以前一些大型的社区也有开放了Android板块,因此开发者能够找到学习资源的社区也就很多,下面几个是比较典型的可以推荐给大家。◆Google Android主站:http://code.google.com/Android/◆Android官方文档:http://code.google.com/Android/documentation.html◆Android中国开发者团队: http://groups.google.com/group/Android-developers-zh