android开发有四个主要方向:
1. 开发标准的sdk本地应用:即与云后台无关的纯app,不需要连网的单机应用,此类应用代表有实用小程序(提醒闹钟,计算器,日记本等等)和游戏类(涉及技术:surface view, opengl es 3D)
2. 开发云的终端应用:此类应用只是云服务的接口在终端设备如手机上的表现形式,需要连接网络并获取数据,如手机QQ
注:以上两类应用都是标准的基于android sdk开发的应用,只是类2需要连网并与云端的服务交互而矣。
3. android系统开发:定制android系统框架和系统服务
4. android系统移植开发,涉及HAL的开发以及设备驱动开发,需要对嵌入式linux和操作系统有深刻理解,一定的硬件知识基础是必要的
一、应用开发:
1. 预备知识:java(线程,socket),英语
2. android视频教程和java视频教程(verycd上找,大把)建立对android应用程序的感性认识
3. android应用开发的书籍:www.china-pub.com上买一本评价在四星以上的应用书一般就ok了(选好书后在京东上买,较便宜且方便,当然有很多电子书可以在verycd和topsage上免费找到)
4. 应用开发高手:developer.android.com的Dev guide和Resouces部份是重点。
5. java高手之路:
a. Java视频教程(verycd上找)以建立感性认识
b. Java书籍(入门并系统地学习java): Java疯狂讲义(国人写的书),Java TCP/IP Socket编程,core java(Java核心编程), The Java Language Specification (Oracle Documentation),java解惑,effective java,Java并发编程实战,java设计模式,深入理解java虚拟机,java虚拟机规范(官方文档)
c. java web 开发(此类书或视频教程涉及html5与后台云端的技术,android应用工程师应根据实际情况了解,至少应知道tcp/ip socket、http编程及client/server和browser/server架构的请求/响应数据流的流程): javascript语言精粹,jquery api, 疯狂java讲义的作者李刚写的几本java web的书,spring,hibernate,ibatis,struts,mysql,oracle, ubuntu server服务器搭建,web service, Tomcat应用服务器原理,分布式java,集群、均衡负载与高并发,osgi
二、系统开发(android源码分析):
预备知识:java(线程,socket),c,c++,jni,《linux程序设计》或《unix环境高级编程》,操作系统(主要是要对进程的内存模型有一个概念,在脑中有一个对应的模型),嵌入式基础
1. source.android.com上下载源码(android 2.3.7,虽然已有4.x但2.3.7因学习资源比较多,更适合分析与学习)并搭建ubuntu10.04的开发环境(),另一个重要的网站:http://www.kandroid.org/online-pdk/guide/ (Android Platform Developer's Guide),最后,一部google nexus s手机也许对你是必要的,这是因为模拟器有一些局限性,当然,模拟器对大部份开发者来说已经足够了。搭建源码工程开发环境用eclipse indigo for c/c++ linux developer即已足够,让source insight和kscope都见鬼去吧!!!source insight和kscope的实用功能eclipse都有,没有的实用功能,eclipse也有,还有大把eclipse插件能派上用场。si的代码跟踪和搜索功能,eclipse更加强大!!!
2. android开机流程以及框架机制:
i) 书(www.china-pub.com上有介绍):深入理解android(主要),Android内核剖析(主要),Android框架揭秘,Android系统原理及开发要点详解(框架与应用部份,其余有关HAL和驱动的内容有一个概念即可,以作为前两本书相互印证和补充的资源并加深印象)
ii) 博客:老罗的Android之旅() ,maxleng的博客:,还有其它的名博可在csdn中的博客频道中找到。
3. HAL和驱动:书:Android技术内幕(系统卷), 上面b中提到的《Android系统原理及开发要点详解》
4. 调试技巧:
)
ii) android原生应用调试:java层(右击项目->debug as ... -> remote java application),带jni的so代码调试(http://www.kandroid.org/online-pdk/guide/debugging_native.html)
iii) android中的可执行程序调试(/system/bin中的程序):http://www.kandroid.org/online-pdk/guide/debugging_native.html
三、内核驱动开发
《Linux设备驱动开发详解》第2版,嵌入式linux应用开发完全手册,linux内核相关的经典书籍,上京东搜下,四星以上的,网友追棒的都值得一读,多买几本对照看,相互印证,效果更好
附:我看过和正在看的书和视频:
java: 孙鑫java无难事视频,《疯狂java讲义》,《突破java基础的16课》,Java TCP/IP Socket编程,《effective java》第2版中文版,java puzzler(java解惑),深入理解java虚拟机,java并发编程实践
linux: ubuntu管理员手册,ubuntu服务器搭建,深入理解计算机系统,操作系统原理,linux程序设计,unix环境高级编程,嵌入式程序设计基础教程,Linux设备驱动开发详解,嵌入式linux应用开发完全手册,精通linux驱动程序设计,linux内核艺术,深入理解linux内核架构
net: 《TCP/IP协议族》第4版
c/c++: c primer plus, c缺陷与陷阱,c专家编程,c与指针,c++ premier中文版特别版第4版,c++沉思录,effective c++, more effective c++, c++模板
android: 疯狂android讲义,深入理解android,Android内核剖析,Android框架揭秘,Android系统原理及开发要点详解,Android系统级深入开发(移植与调试),Android技术内幕,android多媒体编程从初学到精通
web: javascript语言精粹, 分布式java基础
算法: 编程珠矶,算法导论