安卓底层开发

安卓基础复习

系统移植

  1. ~/fspad-733/lichee $./build.sh config (第一次须执行)
  2. AndroidL: source build/envsetup.sh:编译环境变量
  3. lunch:选配
  4. extract-bsp:清除变量
  5. make :编译
  6. make snod:编译节点
  7. make bootimages:编译镜像
  8. pack:打包

安卓的框架结构

  • 应用层:包含安卓的应用
  • 框架层:为上层提供接口和一些服务,管理程序运行的生命周期。
  • 库层:屏蔽底层细节,为上层提供统一的接口
  • JVM与DVM的区别:
  1. JVM运行的是.class文件,dvm运行的是.dex文件
  2. JVM是基于栈,dvm是基于寄存器。dvm运行速度快,效率高
  3. 安卓程序运行在进程,示例之间相互独立。
  • HAL层:硬件抽象层
  1. Jni访问代理人函数:hw_get_module();
  • 内核层:kernel内核,操作系统用来管理文件,内存,进程、网络和设备。
  • 镜像的组成:
  1. BootLoader: uboot-resource.fex
  2. boot: kernel-ramdisk boot.img
  3. system : system.img
  • 系统烧写:
  1. 启动cmd,进入fastboot目录下
  2. 烧写BootLoader: #fastboot.exe flash bootloader boot-resource.fex
  3. 烧写boot.img: fastboot.exe flash boot boot.img
  4. 烧写system.img: fastboot.exe flash system system.img
  5. 重启:fastboot reboot
  • 导出交叉编译工具链
  1. 当前终端: export PATH=$PATH:/home/linux/external-toolchain/bin
  2. 当前用户: vi .bashrc 添加:export PATH=$PATH:/home/linux/external-toolchain/bin
  3. 所有用户 sudo vi /etc/environment 添加:/home/linux/externl-toolchain/bin