编译安卓源码

准备

编译

注意

在开始编译前,确保已经搭建好如上准备所述的环境。

编译U-Boot:

1
2
3
$ cd PATH_YOUR_PROJECT
$ cd bootloader/uboot
$ ./mk kvim4 --avb2 --vab

生成文件描述如下:

  • build/u-boot.bin.signed:板载EMMC烧录uboot
  • build/u-boot.bin.sd.bin.signed:TF卡烧录uboot

编译Linux内核:

1
$ ./mk kvim4 -v 5.4 -jN
注意
  • 替换N为你自己电脑实际的线程数。

编译安卓:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ . build/envsetup.sh
$ lunch TARGET_LUNCH
$ make -jN otapackage

生成镜像文件如下:

  • out/target/product/TARGET/update.img
注意
  • VIM4编译安卓不会像VIM3那样同时也编译Linux Kernel
  • 替换N为你自己电脑实际的线程数。
  • TARGET_LUNCH 定义如下:
    • 编译VIM4时:kvim4-userdebug

构建自己的编译脚本demo:

1
$ vim demo.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash

#build U-Boot
if [ "$1" == 'u' ] || [ "$1" == 'n' ]; then
echo "build U-Boot"
cd bootloader/uboot
./mk kvim4 --avb2 --vab
cd -
fi

#build Kernel
if [ "$1" == 'k' ] || [ "$1" == 'n' ]; then
echo "build Kernel"
if [ "$2" == 'n' ] || [ "$1" == 'n' ]; then
make distclean
fi
./mk kvim4 -v 5.4 -j100
fi

#build Android
if [ "$1" == 'a' ] || [ "$1" == 'n' ]; then
echo "build Android"
if [ "$2" == 'n' ] || [ "$1" == 'n' ]; then
make clean
fi
. build/envsetup.sh
lunch kvim4-userdebug
make installclean
#make -j80 otapackage
make -j80
fi
1
2
3
4
5
6
7
8
9
10
11
#build U-Boot
$ ./demo.sh u

#build Kernel
$ ./demo.sh k

#build Android
$ ./demo.sh a

#build all
$ ./demo.sh n

参考