本文链接:http://blog.csdn.net/wonfly2011/article/details/29379525

Android 架构图

一、方向篇

首先选择方向:底层硬件、应用层软件、游戏开发?

如果没有基础的,就乖乖的开始学习基础知识,从CoreJava到Android基础,然后再用实例去练习简单的demo,进而复杂的demo,最后相对有选择性的学习,比如游戏,学一些框架,应用的话就多学一些和server端交互的知识,底层的话还得学C。

有过有基础,首先你得清楚你的高手的定位——是底层硬件呢,还是应用层的软件?想成为全才几乎不现实,如果钻研底层的话,可以研究C/C++,至少得会搞个ROM出来,这样才能配的上高手;如果专注于APP,那么得把Java搞透了,然后服务器端开发也要通晓,毕竟现在的一流移动应用几乎都得与服务器通信...

1. android是基于linux,所以要熟悉linux系统,特别是嵌入式linux系统

2. android平台的程序都是通过Java语言开发的,所以要熟悉java语言

3. android系统级的程序或者底层调用NDK开发,需要用到C/C++

4. 大多数android应用都是客户端应用,所以对UI的设计及界面开发也要有足够的了解。

5. 高手有很多种,比如做ROM、开发系统应用、一般的WEB手机端应用、Android游戏。。。

二、层次篇

Android开发上有三个层次技术:

1. 第一个层次和传统的嵌入式Linux最接近,主要涉及的是CPU、GPU以及外设的驱动以及使能方面。多需要熟悉Linux内核,Android框架定义中驱动的接口规范等等,这部分开源社区的力量最大。这个层次技术主要需求方是是各种CPU和Android设备解决方案供应商。

2. 第二个层次主要是涉及Android框架中间件部分,如多媒体/3D框架,Java虚拟机等等,这部分Google控制的是最严格的,因为他要控制 Android各种feature以及捆绑自己的移动互联网应用,必须规范中间件。这部分所涉及的软件技术也最多,从各种C/C++库,Java虚拟机性 能,用户体验抽象到数据库设计等等很大的内涵。开发的一般也是选择一个方向发力。另外深度定制Android ROM重点也是这个层次。

3. 第三个层次就是App开发层次,这个层次主要就是利用Android SDK开发了。很多C/C++出身的觉得是用Java开发,其实Java就是啥都是指针的C++,外带try/catch以及垃圾收集,上手其实是很快的。Android程序最重要一点是理解生命周期概念,将一个Activity和Linux进程关系搞清楚,啥时候这个进程启动,啥时候睡眠,啥时候退出,后台的事件循环如何运行的,最后时刻要提醒自己虚拟机在运行,垃圾收集在运行。Google Code上有还多参考代码,在看中学,体会很快的。

另外,本人采用了一种特别的模式来进行Android程序开发:Java只负责界面,用NDK来做各种复杂的业务和数据处理,Java与NDK之间设计好API以及事件传递方式(Android SDK 中Localsocket就可以很好用做事件发送)。这种方式适合C/C++背景的开发人员上手Android,Java无需达到熟练即可。

三、知识篇

从Android架构得出我们必须要掌握的知识点:

1、Linux知识

Android是基于Linux内核的,编译Android源码也必须在Linux上,所以必须掌握Linux的基础知识(操作区别、简单指令、进程等),可以装个VM虚拟机没事玩玩

2、C/C++知识

Android大部分核心库是C/C++的动态链接库,系统大部分隐藏API都是在这里面的,而且你看哪条面试中没写要求熟悉NDK(Java+C/C++形式)开发,所以必须熟悉C/C++知识,C语言看谭浩强的《C语言程序设计》就可以,NDK推荐看《Android C++高级编程》一书

3、Java 知识

Android是80%的Java package,IDE和语言都是Java,没理由不具备精通级的Java知识(尤其是多线程、I/O流、面向对象思想、http和socket网络等,面试必问题)

4、T-SQL知识

可以只是基础的增删改查和子查询

5、其他

5.1、数据结构(基础)
5.2、设计模式(推荐看《大话设计模式》,然后再带入Android API看设计模式在Android中的应用)
5.3、Web开发语言+Html+JS(推荐php和jsp,做到最后怎么着都得熟悉一门Web开发语言)

四、方法篇

1、GitHub(这简直就是摆在那里的财富,各种你需要的Android的例子上面都有,只是你必须要学会去搜索)

2、Android ROM(想想自己做一个专属的ROM屌不屌)

3、afinl、thinkandroid等各种Android开源快速开发框架(要是能参与开源项目就离大牛不远了)

4、iOS开发(我是很羡慕人家用苹果机我用win7系统的)

5、各种Android开发论坛(学习最快的形式是交流和传授)

五、行动篇

蜀之鄙有二僧,其一贫,其一富。贫者语于富者曰:“吾欲之南海,何如?”富者曰:“子何恃而往?”曰:“吾一瓶一钵足矣。”富者曰:“吾数年来欲买舟而下,犹未能也。子何恃而往?“越明年,贫者自南海还,以告富者。富者有惭色。

西蜀之去南海,不知几千里也,僧富者不能至,而贫者至焉。人之立志,顾不如蜀鄙之僧哉?是故聪与敏,可恃而不可恃也;自恃其聪与敏而不学者,自败者也。昏与庸,可限而不可限也;不自限其昏与庸而力学不倦者,自力者也。


更多相关文章

  1. Android开发-直播视讯(3)-创建一个Ubuntu虚拟机并实现VMtools文
  2. Android中的一些小知识点
  3. 请教大家一些java概念的知识
  4. 牛客网Java刷题知识点之同步方法和同步代码块的区别(用synchroniz
  5. Java nio 学习笔记(一) Buffer(缓冲区)与Channel(通道)的相关知识
  6. 开发网站相关知识html和javascript
  7. 关于LSA的相关学习---短文本聚类涉及到的知识,一种主题模型(原载于
  8. Java 中的一些更深入些的知识。。。
  9. Java核心技术卷I:基础知识(原书第8版):14.10 同步器

随机推荐

  1. android 根据string 获取资源文件的id
  2. 自定义单选按钮(RadioButton)的样式
  3. android电池系统
  4. OSCHINA Android 客户端 - 手机相关软件
  5. Android回顾--(九) ListView和自定义适配
  6. [置顶] Android中几种预定义样式
  7. Android存储系统之源码篇
  8. Android关机重启实现
  9. 自定义View系列教程08--滑动冲突的产生及
  10. Property Animation属性动画,还用补间动画