---
title: 镜像一键式编译脚本
description: "华为提供一键式编译Kbox安卓镜像的自动化脚本。一键式编译脚本包含了编译构建的全部流程，若参考本章节使用了一键式编译脚本进行镜像编译，则可以跳过软件编译后续章节直接进行软件部署。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/armnative/kunpengcpskbox_20_0124.html
sourcePath: /source/zh/kunpengboostkithistory/2400/armnative/kunpengcpskbox_20_0124.html
indexId: e057d74392a612ef1f512c4cada99b82375e2d7c0c06d13fc4afd1d47019218876
---
# 镜像一键式编译脚本

华为提供一键式编译Kbox安卓镜像的自动化脚本。一键式编译脚本包含了编译构建的全部流程，若参考本章节使用了一键式编译脚本进行镜像编译，则可以跳过软件编译后续章节直接进行软件部署。

自动化脚本实现了安装编译依赖包、编译AOSP源码与镜像生成章节的操作。使用自动化脚本需要准备AOSP源码、华为提供的Kbox二进制文件包、ExaGear转码包和Android代码补丁包、编译脚本包，请参见表1获取。自动化脚本的使用步骤如下：

1. 首先在“/home”目录下手动创建“auto_compile”目录，用于存放AOSP源码以及自动化脚本。
  请确保“/home”目录的剩余空间大于250GB，可通过df -h命令查看磁盘空间情况。

  1 2 mkdir -p /home/auto_compile cd /home/auto_compile

2. 在“/home/auto_compile”目录下载AOSP源码，版本为android-11.0.0_r48，将下载好的AOSP源码目录重命名为“aosp”。
3. 请参见软件环境下载Kbox-AOSP11.zip文件到本地，上传到服务器的“/home/auto_compile”目录，并解压。

```
cd /home/auto_compile
unzip Kbox-AOSP11.zip
```


4. 修改容器网络配置。

  a. 编辑kbox11_android_build.sh脚本。
    1 2 cd /home/auto_compile/Kbox-AOSP11/make_img_sample/kbox11_android_build vim kbox11_android_build.sh

  b. 按“i”进入编辑模式，修改以下内容，用于配置容器的DNS地址。需保证配置的地址可用，且按照文件的格式进行配置，否则可能导致编译获得的镜像不可用。配置格式参考示例如下。
    1 DNS=xx.xx.xx.xx

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
5. 请参见软件环境下载Android Kbox二进制文件包、ExaGear转码包、Meson、mesa源码、llvm源码、libdrm源码、libva源码和Cloudphone应用安装包到本地。在如下指定目录中创建“package”文件夹。
  1 2 cd /home/auto_compile/Kbox-AOSP11/make_img_sample/kbox11_android_build mkdir -p package

  将下载的文件上传至服务器的“/home/auto_compile/Kbox-AOSP11/make_img_sample/kbox11_android_build/package”目录。

6. 执行kbox11_android_build.sh自动化脚本完成Kbox编译。
  1 2 cd /home/auto_compile/Kbox-AOSP11/make_img_sample/kbox11_android_build && chmod +x kbox11_android_build.sh ./kbox11_android_build.sh

  此脚本执行时间较长，请耐心等待。脚本执行完成会有如下回显。如遇脚本执行报错，优先排查脚本并联系华为工程师。

  1 2 3 ---------------Success-------------- /home/auto_compile/aosp/android.tar ---------------End--------------

  至此，Kbox安卓镜像制作完成，在AOSP源码目录下会生成名为“android.tar”的Kbox镜像。


#### 故障处理

问题现象

执行kbox11_android_build.sh自动化脚本时概率出现“'format_info.h' file not found”类报错，原因为mesa多线程编译概率性发生编译所依赖的头文件后生成，导致编译失败。

```
../src/mesa/main/formats.c:81:10: fatal error: 'format_info.h' file not found
#include "format_info.h"
1 error generated.
```

解决步骤

1. 使环境变量生效。
  1 source ~/.bashrc

2. 重新编译。
  1 2 3 4 cd /home/auto_compile/aosp source build/envsetup.sh lunch kbox_arm64-user make -j

  如果出现相同报错，请再次执行编译，直到不再出现相同报错。 1 make -j

  执行成功后，会有如下回显： 1 #### build completed successfully (xx:xx (mm:ss)) ####

3. 继续执行以下命令用于生成“android.tar”的Kbox镜像。
  1 2 3 cp -r /home/auto_compile/Kbox-AOSP11/make_img_sample/kbox11_android_build/create-package.sh /home/auto_compile/aosp chmod +x create-package.sh ./create-package.sh /home/auto_compile/aosp/out/target/product/arm64/system.img
