源码编译

目录结构

下面以瑞芯微提供的安卓11SDK来分析其源码目录结构:

image-20250625143227928

除了安卓系统架构设计的目录,还有些重要的目录和文件:

  • android.bp:类似makefile,安卓采用了soong来替代make工具进行构建
  • bionic:安卓使用的C标准库,和GCC/MSVC提供的C库有些区别
  • bootable:和引导程序相关的目录
  • build:存放编译规则的目录
  • build.sh:RK提供的编译脚本,AOSP是没有的
  • cst:存放兼容性测试的代码
  • developers:和应用开发相关的目录
  • device:存放了lunch命令支持的设备
  • externel:一些开源组件
  • out:存放编译结果
  • pdk:本地开发套件
  • platform_testing:平台测试
  • prebuilts:存放资源文件,比如交叉编译器(这玩意居然都直接放到源码仓库里…)
  • rkbin:RK提供的一些不开源的工具或者镜像
  • system:底层文件相关
  • uboot/kernel:RK针对它们的CPU适配的uboot/内核
  • vendor:厂商定制的代码(各层都有,比如海康开发的一些安卓APK,framework层等)

编译方法

步骤分为3步:

  • 1.将各种编译命令添加到环境变量:source build/envsetup.sh
  • 2.选择使用的设备和模式:用lunch工具进行
  • 3.开始编译

RK给我们提供了一键编译脚本build.sh,通过它可以选择单独编译uboot/内核,或是直接编译整个安卓系统

image-20250625150404367