目录
1.android模拟器
1.1 运行模拟器要执行emulator命令
1.2 启动Android模拟器需要4个文件
zImage ----Linux内核镜像文件
system.img (android系统镜像文件)
userdata.img (android系统镜像文件)
ramdisk.img (android系统镜像文件)
1.3编译Android内核源代码
Android模拟器使用的CPU体系是arm的,—》修改ARCH为arm
PC上为Android模拟器编译内核—》修改CROSS_COMPILE指定编译工具
2.Android应用程序
2.1包含
一个源代码目录src
一个资源目录res
layout
values
drawable
一个配置文件AndroidMainfest.xml
一个编译脚本文件Android.mk
3.单独编译某个模块—命令mmm
要先执行 build/envsetup.sh,才能使用mmm命令。
mmm + 要编译的模块所在的目录(该目录要有Android.mk)
4.单独编译Android应用程序模块
后面讲
5.重新打包Android系统镜像文件—命令make snod
用mmm编译好应用程序后,还需要打包system.img,否则看不到应用程序。
6.ROM的组成
7.硬件抽象层(Hardware Abstract Layer,HAL)
运行在用户空间,向上提供硬件访问服务,向下屏蔽硬件驱动模块的实现细节。
Android系统分两层来支持硬件设备:
(1)一层实现在用户空间 ====》隐藏硬件的实现细节和参数
(2)一层实现在内核空间 ====》只有内核才有权操作硬件设备
8.实践,流程如下:
8.1内核空间添加硬件开发驱动程序
8.2用户空间添加硬件抽象层模块
8.3在应用程序框架层中添加一个硬件访问服务
8.4开发一个应用程序来访问该硬件
8.2.1 硬件抽象层模块编写规范
hal以模块的形式管理各个硬件访问接口。每一个硬件模块都对应一个动态链接库文件,这些文件的命名要符合规范。同事,每一个模块都使用结构体hw_module_t来描述,硬件设备用hw_device_t来描述。
8.2.2 编写硬件抽象层模块接口
每一个模块在内核中都对应一个驱动程序,HAL就是通过这些驱动程序来访问硬件设备的,通过读写设备文件进行通信
硬件抽象层模块接口源文件一般保存在hardware/libhardware目录中.