火山引擎云手机支持用户基于平台提供的 AOSP 镜像基线版本构建自定义镜像。构建的自定义镜像可通过云手机控制台上传使用。本文介绍开发者如何开启镜像服务并快速构建自定义镜像。
通过以下步骤,开启和配置自定义镜像服务。
打开火山引擎云手机控制台「镜像管理」页面。在「自定义镜像」标签页下,点击 立即启用。

在「启用镜像管理」弹窗中,填写用于下载和编译 AOSP 代码的服务器的密钥对配置信息和公网 IP、选择 AOSP 版本后,点击 确定,开通自定义镜像服务。
cat ~/.ssh/id_rsa.pub 获取curl ifconfig.me 获取
sudo apt-get install git
# 设置全局用户名
git config --global user.name "your name"
# 设置邮箱
git config --global user.email "your email"
# Debian/Ubuntu.
$ sudo apt-get install repo
$ mkdir -p ~/bin
$ export PATH="${HOME}/bin:${PATH}"
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+rx ~/bin/repo
mkdir aosp10
cd aosp10
export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo //如无法访问Google,可使用国内清华的git-repo替代
repo init -b master -u ssh://git@gitlab.aic-misc.volces.com/byteOS/aosp_manifest -m aosp_common/aosp10_default.xml
repo sync
repo start master --all
mkdir aosp11
cd aosp11
export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo //如无法访问Google,可使用国内清华的git-repo替代
repo init -b master -u ssh://git@gitlab.aic-misc.volces.com/byteOS/aosp_manifest -m aosp_common/aosp11_default.xml
repo sync
repo start master --all
:::tip
由于 sync 时间较长,建议在后台同步。
:::
nohup repo sync 1>sync.log 2>&1 &
repo sync
:::tip
可将 mergebranch 替换为任何一个新的分支名,用于暂存远程最新代码。
:::
repo start mergebranch --all //启动一个新分支mergebranch
repo sync //在新分支上同步代码
repo checkout master --all //切回开发分支master
repo forall -c git rebase mergebranch //将新代码rebase到master
repo abandon mergebranch --all //禁用暂存分支mergebranch
//安装工具链
apt-get update
apt-get install -y locales patch diffstat gawk chrpath curl wget python \
make rpm2cpio sudo mtd-utils vim cmake openjdk-8-jdk unzip zip bison \
squashfs-tools bc lzop cpio libxml2-utils texinfo git gcc g++ \
libc6-i386 lib32stdc++6 lib32gcc1 python-mako python-enum34 \
gettext libssl-dev kmod python3 rsync pigz libxml-simple-perl \
libncurses5 libncurses5:i386
在代码根目录下执行命令:
source build/envsetup.sh
lunch gemini-user
make -j8 BUILD_WITH_AGENT=true
:::tip
编译时间较长,建议在后台编译。
:::
build.sh,内容如下:source build/envsetup.sh
lunch gemini-user
make -j8 BUILD_WITH_AGENT=true
nohup bash build.sh 1>build.log 2>&1 &
在代码根目录下执行命令:
source build/envsetup.sh
lunch gemini-userdebug
make -j8 BUILD_WITH_AGENT=true
:::tip
编译时间较长,建议在后台编译。
:::
build.sh,内容如下:source build/envsetup.sh
lunch gemini-userdebug
make -j8 BUILD_WITH_AGENT=true
nohup bash build.sh 1>build.log 2>&1 &
编译生成的镜像为 out/target/product/gemini 目录下 system.img 和 vendor.img。
将 system.img 和 vendor.img 文件上传到火山引擎账号下的对象存储 TOS 的 bucket 中(可参考 TOS 的使用方法)。
调用云手机的导入镜像接口或者在云手机控制台页面上传构建的自定义镜像。

可能原因:Python 版本问题,需要安装 Python 3.7。