最近更新时间:2024.04.25 21:24:26
首次发布时间:2023.06.28 21:07:13
火山引擎云手机支持用户基于平台提供的 AOSP 镜像基线版本构建自定义镜像。构建的自定义镜像可通过云手机控制台上传使用。本文介绍如何开启镜像服务和构建自定义镜像。
已申请开通云手机服务,并购买云手机实例资源。详细信息,参考资源管理;
当前已支持的版本:AOSP 10;
代码遵循 Apache 开源协议;
代码编译产物仅支持在火山引擎云手机实例运行,无法在其他本地安卓设备上使用。
CPU:I7 8代以上
内存:32G
硬盘:500G 以上,建议 SSD
网络:100mbps 以上外网访问速度
操作系统:Ubuntu 20.04 AMD64
构建自定义镜像前,需要通过云手机控制台配置下载和编译 AOSP 镜像基线代码的服务器的公网 IP和服务器的 SSH 密钥对。
打开 导入自定义镜像 页面,在 访问IP白名单 标签页下,点击 新增IP白名单。
在 新增访问IP白名单 弹窗中,填写加白的服务器 IP 地址(可通过 curl ifconfig.me
获取)和描述信息。
点击 确定,保存配置。
构建自定义镜像前,需要配置下载和编译 AOSP 镜像基线代码的服务器的 SSH 密钥对。
打开 导入自定义镜像 页面,在 SSH****密钥对 标签页下,点击 创建SSH密钥对。
在 创建 SSH 密钥对 弹窗中,填写密钥对名称、选择自动创建密钥对或导入已有公钥(可通过 cat ~/.ssh/id_rsa.pub
获取)、选择密钥对类型、输入密钥对的描述信息。
点击 确定,创建 SSH 密钥对,并下载保存生成的私钥。
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
说明
由于 sync 时间较长,建议在后台同步。
nohup repo sync 1>sync.log 2>&1 &
repo sync
可将 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
说明
编译时间较长,建议在后台编译。
build.sh
,内容如下:source build/envsetup.sh lunch gemini-user make -j8 BUILD_WITH_AGENT=true
nohup bash build.sh 1>build.log 2>&1 &
编译生成的镜像为 out/target/product/gemini
目录下 system.img
和 vendor.img
。
参考 开通 TOS 服务 开通火山引擎 TOS 服务。
将 system.img
和 vendor.img
文件上传到火山引擎账号下的对象存储 TOS 的 bucket 中。
在云手机控制台页面上传构建的自定义镜像,或调用云手机的 镜像构建(ImportContainerImage) 接口。
若未向云手机授权 TOS 访问,可根据页面引导完成授权
选择已经上传至 TOS bucket 内的文件,执行导入镜像操作。
可能原因:Python 版本问题,需要安装 Python 3.7。