在程序员的日常工作中,由于工作需要大量修改framework代码,在AOSP(AndroidOpenSourceProject)源码上花费了不少功夫,Application端和Services端都看和改了不少.
如果只是想看看一些常用类的实现,在Android包管理器里把源码下载下来,随便一个IDE配好SourceCode的path看就行.但如果想深入的了解Android系统,那么可以看下我们汇道一些工程师的一些简单的总结:
知识
Java
Java是AOSP的主要语言之一.没得说,必需熟练掌握.
熟练的AndroidApp开发
Linux
Android基于Linux的,并且AOSP的推荐编译环境是Ubuntu12.04.所以熟练的使用并了解Linux这个系统是必不可少的.如果你想了解偏底层的代码,那么必需了解基本的Linux环境下的程序开发.如果再深入到驱动层,那么Kernel相关的知识也要具备.
Make
AOSP使用Make系统进行编译.了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的.
Git
AOSP使用git+po进行源码管理.这应该是程序员必备技能吧.
C++
Android系统的一些性能敏感模块及第三方库是用C++实现的,比如:Input系统,Chromium项目(WebView的底层实现).
硬件
流畅的国际网络
AOSP代码下载需要你拥有一个流畅的国际网络.如果在下载代码这一步就失去耐心的话,那你肯定没有耐心去看那乱糟糟的AOSP代码.另外,好程序员应该都会需要一个流畅的Google.
一台运行Ubuntu12.04的PC.
如果只是阅读源码而不做太多修改的话,其实不需要太高的配置.
一台Nexus设备
AOSP项目默认只支持Nexus系列设备.没有也没关系,你依然可以读代码.但如果你想在大牛之路走的更远,还是改改代码,然后刷机调试看看吧.
高品质USB线
要刷机时线坏了,没有更窝心的事儿了.
软件
Ubuntu12.04
官方推荐,没得选.
OracleJava1.6
注意不要用OpenJDK.这是个坑,官方文档虽然有写,但还是单独提一下.
安装:
sudoapt-getinstallpython-softwa-propertiessudoadd-apt-positoryppa:webupd8team/javasudoapt-getupdatesudoapt-getinstalloracle-java6-installersudoapt-getinstalloracle-java6-set-default
Eclipse
估计会有不少人吐槽,为什么要用这个老古董.其实原因很简单,合适.刚开始搞AOSP时,为了找到效率最优的工具,我尝试过Eclipse,IntelliJIDEA,Vim+Ctags,SublimeText+Ctags.最终结果还是Eclipse.主要优点有:
有语法分析(快速准确的类,方法跳转).
支持C++(IntelliJ的C++支持做的太慢了).
嵌入了DDMS,ViewHierarchy等调试工具.
为了提高效率,花5分钟背下常用快捷键非常非常值得.
调整好你的classpath,不要导入无用的代码.因为AOSP项目代码实在是太多了.当你还不需要看C++代码时,不要为项目添加C++支持,建索引过程会让你崩溃.
IntellijIDEA
开发App必备.当你要调试系统的某个功能是,常常需要迅速写出一个调试用App,这个时候老旧的Eclipse就不好用了.ItellijIDEA的xml自动补全非常给力.
其它
代码组织
AOSP的编译单元不是和git项目一一对应的,而是和Android.mk文件一一对应的.善用mmm命令进行模块编译将节省你大量的时间.
Binder
这是Android最基础的进程间通讯.在Application和Systemservices之间大量使用.你不仅要知道AIDL如何使用,也要知道如何手写Binder接口.这对你理解Android的Application和Systemservices如何交互有非常重要的作用.Binder如何实现的倒不必着急看.
HAL
除非你对硬件特别感兴趣或者想去方案公司上班,否则别花太多时间在这一层.
CyanogenMod
这是一个基于AOSP的第三方Rom.从这个项目的wiki里你能学到很多AOSP官方没有告诉你的东西.比如如何支持Nexus以外的设备.
DIA
这是一个Linux下画UML的工具,能够帮你梳理看过的代码.
THEEND
PS:汇道IT技术交流群持续招募中,有兴趣的伙伴拉到底部留言加小编联系方式,至于加群有什么好处呢?
每周汇道公开课,大咖导师的问题答疑,实际案例实际分析
行业专场风暴,JAVA技术,H5前端,UI设计,Android等IT技术专场
线下聚会交流
腾讯、华为、阿里、百度等大咖分享交流
资源及人脉共享
名企就业岗位推荐
其他的。。。。
汇道IT社群是基于互联网IT技术的学习型组织,社群设有每周风暴,嘉宾分享,问题答疑等活动,另社群已开设行业交流专场,如JAVA技术,H5前端,UI设计,Android等IT专场。欢迎各行业互联网IT技术达人加入我们汇道大家庭,IT大咖都来这里了,赶紧行动吧!
huidaokj∣高端IT人才培养基地