1.    相关硬件
电池,RTC,键值(普通键值,DOCKING键值),LED灯,背光,传感器(亮度,距离,速度,指南针等),振动,蓝牙,相机,音视频引擎,网络,显示,电话

2.    硬件相关的主要目录

kernel,vendor,device,hardware,bootable

3.    以HTC G1为例分析其主要的平台配置目录device/htc/dream/* (froyo源码)

1)        注意:froyo以前版本在vendor/htc中,需要单独下载,现在都已经在git里包含了g1,g2的支持。

2)        说明 (参见g1,g2)

a)         AndroidProducts.mk
说明产品都需要编什么东西,定义产品使用哪个mk文件

b)        vendorsetup.sh
加上某硬件的支持,以便编译前用lunch选择

c)         full_dream.mk      
定义产品所要编译的项目,指定需要编译哪些应用,产品名称,设备,型号(重要)

d)        BoardConfig.mk
含mtd设备的分区,硬件相关的模块,及编译工具

e)         AndroidBoard.mk
编译kernel, bootload, nandwrite, 键值定义文件, 开机画面的说明,重要的是kernel的默认配置文件KERNEL_DEFCONFIG

f)         device_*.mk
相关具体硬件(美国版的G1),

g)        overlay
格式类似源码根目录,存在定制产生用到的资源

h)        *.kl, *.kcm
键值定义

i)          *.sh
辅助工具的脚本,如从update.zip中提取库

4.    编译某平台相关代码

1)        G1/G2

a)         下载并编译kernel

b)        从手机或update.zip中提取so库

c)         编译,烧写

2)        其它机型

a)         下载并编译kernel

b)        按froyo新规则添加硬件相关目录结构(vender=>device),修改mk文件

c)         从手机或update.zip中提取so库

d)        编译,烧写

5.    技巧

1)        可以逐步替换boot.img,system.img以定位问题

2)        逐个对比新旧system目录,以确认问题

3)        先让adb shell可用,以便调试

a)         重要的包

                        i.              boot.img:含kernel和基本的文件系统
理论上说,只有boot.img而没有system.img也是可以启动并连接adb调试的,因为adbd在boot.img所含的基本文件系统中,但是需要重新定义init.rc

                      ii.              system.img:含主要系统,命令,库,图形界面

                    iii.              userdata.img:放用户数据

b)        启动顺序为bootloader->kernel->system->launcher