2. Android SDK编译
SDK介绍
Android SDK版本信息
内核版本:5.4
Android系统版本:12.0
获取SDK源码
网盘下载目录
1-SDK\Android12.0\
h618-android12.0-xxxxxxxxxx.tar.gz
建议下载日期最新的版本
拷贝源码压缩包到编译主机目录
注意事项:
源码不可放在共享目录下编译
编译主机不可用ROOT账号登陆
MD5校验文件完整性
$ md5sum -c *.md5
解压源码压缩包
$ tar -zxvf *.tar.gz
解压完成后,查看源码目录仅有.git文件夹,需要执行下一步才能完成恢复出源码
Git恢复源码目录
$ git reset --hard
首次编译环境配置
首次编译需要配置一下编译环境,后续不改变sdk位置,则无需重复配置
先进入longan目录
$ cd longan
然后执行命令
$ ./build.sh config
选择如下配置
Welcome to mkscript setup progress
All available platform:
0. android
1. linux
Choice [android]: 0
All available ic:
0. h618
Choice [h618]: 0
All available board:
0. ft
1. p1
2. p2
3. p7
4. p7l
5. perf1
6. perf2
7. perf3
8. qa
Choice [p2]: 2
All available flash:
0. default
1. nor
Choice [default]: 0
All available kern_ver:
0. linux-5.4
Choice [linux-5.4]: 0
All available arch:
0. arm
1. arm64
Choice [arm64]: 1
然后再执行
$ cd -
选择主板
$ ./build.sh lunch
will lunch sdk
You're building on Linux
Lunch menu...pick a combo:
1. BoardConfig-kickpi-k2b-tablet.mk
2. BoardConfig-kickpi-k2b-tv.mk
3. BoardConfig-kickpi-k2c-tablet.mk
4. BoardConfig-kickpi-k2c-tv.mk
Which would you like? [0]:
说明
BoardConfig-kickpi-'boadr'-'desktop'
board:主板 k2b / k2c
desktop:桌面 tv / tablet
编译完整镜像
$ ./build.sh
镜像生成目录:longan/out/h618_android12_p2_uart0.img
注意:如果编译Android的时候失败了,没有明显的报错,可以修改build.sh 里面Android编译的进程数,将make -j32减小至你设备的实际情况。
单独编译分区镜像
单独编译Uboot
$ ./build.sh uboot
镜像生成目录:longan/out/h618_android12_p2_uart0.img
单独编译Kernel
$ ./build.sh kernel
镜像生成目录:longan/out/h618_android12_p2_uart0.img
配置内核
cd longan
./build.sh menuconfig
./build.sh saveconfig
单独编译Android
$ ./build.sh android
镜像生成目录:longan/out/h618_android12_p2_uart0.img
设备树路径
h618-android12.0/longan/device/config/chips/h618/configs/p2/linux-5.4/
board-k2b.dts board-k2c.dts
常见问题
安卓编译失败
编译安卓时失败 且没有明显错误报错,修改一下内容尝试重新编译

APP 文件编译不生效问题
android 为惰性编译,直接替换后编译,一些APP、文件不一定编译到镜像中
可以通过如下其中一种方式解决
make installclean
rm out/target/product/apollo-p2/xxx/xxx
编译的条件发生变化(比如文件名、APK名)
全部编译替换不生效问题
由于惰性编译,一些编译目标或依赖直接替换文件,在编译时不会拷贝生效。
编译前需要先手动清除:
SDK$ source build/envsetup.sh
SDK$ lunch apollo_p2-userdebug
SDK$ make installclean -j32
Last updated