每日一课Android系统开发的基础知识

在程序员的日常工作中,由于工作需要大量修改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人才培养基地

长按,识别







































呼和浩特最好的白癜风医院
什么原因导致白癜风



转载请注明:http://www.gslnbdf.com/azfz/10033.html