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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具