Android源码编译相关

Android源码国内镜像:

https://lug.ustc.edu.cn/wiki/mirrors/help/aosp

编译环境配置:

一般在Ubuntu 64位(18.04等)下面编译
安装必要的软件包及OpenJDK:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev lib32z1 x11proto-core-dev libx11-dev lib32readline6-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc 

编译源码

每个芯片平台可能略有差异

source build/envsetup.sh 
lunch #32 
make update-api 
make -j4 
make aboot -j4 
make bootimage -j4 
make installclean 
make snod 
mmm -B 

编译指定Package

m: 编译所有的模块
mm: 编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件

重新生成sysem.img:

make snod

或者 make systemimage -j8,也可以生成system.img 通过fastboot更新
注意:
前提是使用设置了编译环境:

source build/envsetup.sh 
lunch XXX

制作差异包:

  1. make otapackage
  2. mkdir OTA
  3. 复制out\target\product\xxx\obj\PACKAGING\target_files_intermediates\OTA包-A到OTA目录
  4. 修改自己要改的
  5. make otapackage
  6. 复制out\target\product\xxx\obj\PACKAGING\target_files_intermediates\OTA包-A到OTA目录
  7. ./build/tools/releasetools/ota_from_target_files -v -i 差分包名

多次修改源码后编译报错Out of space

Out of space?

https://github.com/opengapps/aosp_build/issues/13
修改device/xxx/xxx/BoardConfig.mk或者device/xxx/xxx/BoardConfigCommon.mk
里面的BOARD_SYSTEMIMAGE_PARTITION_SIZE字段的大小

编译源码报错

Try increasing heap size with java option ‘-Xmx

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server

参考

  • Android官方文档
  • 各芯片平台指导手册