android适配硬件平台
android 适配硬件平台
1. 相关硬件
电池,RTC,键值(普通键值,DOCKING 键值),LED
灯,背光,传感器(亮度,距离,速度,指南针等),振动,蓝牙,相机,音视频引擎,网络,显示,电话
2. 硬件相关的主要目录
kernel,vendor,device,hardware,bootable
3. 以 HTC G1 为例分析其主要的平台配置目录 device/htc/dream/* (froyo 源码)
注意:froyo 以前版本在 vendor/htc 中,需要单独下载,现在都已经在 git 里包含了 g1,g2 的支持。
说明 (参见 g1,g2)
AndroidProducts.mk
说明产品都需要编什么东西,定义产品使用哪个 mk 文件vendorsetup.sh
加上某硬件的支持,以便编译前用 lunch 选择full_dream.mk
定义产品所要编译的项目,指定需要编译哪些应用,产品名称,设备,型号(重要)BoardConfig.mk
含 mtd 设备的分区,硬件相关的模块,及编译工具AndroidBoard.mk
编译 kernel, bootload, nandwrite, 键值定义文件, 开机画面的说明,重要的是 kernel 的默认配置文件
KERNEL_DEFCONFIG
device_*.mk
相关具体硬件(美国版的 G1),overlay
格式类似源码根目录,存在定制产生用到的资源.kl, .kcm
键值定义*.sh
辅助工具的脚本,如从 update.zip 中提取库
4. 编译某平台相关代码
- G1/G2
下载并编译 kernel
从手机或 update.zip 中提取 so 库
编译,烧写
- 其它机型
下载并编译 kernel
按 froyo 新规则添加硬件相关目录结构(vender=>device),修改 mk 文件
从手机或 update.zip 中提取 so 库
编译,烧写
5. 技巧
可以逐步替换 boot.img,system.img 以定位问题
逐个对比新旧 system 目录,以确认问题
先让 adb shell 可用,以便调试
- 重要的包
- boot.img:含 kernel 和基本的文件系统
理论上说,只有 boot.img 而没有 system.img 也是可以启动并连接 adb 调试的,因为 adbd 在 boot.img
所含的基本文件系统中,但是需要重新定义 init.rc
system.img:含主要系统,命令,库,图形界面
userdata.img:放用户数据
- 启动顺序为 bootloader->kernel->system->launcher