亚马逊AWS官方博客

基于 Graviton4 实例和 Redroid 搭建云手机

Amazon Graviton4 简介

2023 re:Invent 大会宣布了 Amazon Graviton4 处理器,该芯片使用 ARM Neoverse V2 内核定制设计的 ARM 架构构建,集成了 730 亿个晶体管,针对提供高性能和能效进行了优化。

最近,亚马逊云科技陆续宣布 Amazon EC2 R8g/M8g/C8g 实例正式上线,这些实例由 Graviton4 处理器提供支持,基于 Amazon Nitro 系统构建,通过将 CPU 虚拟化、存储和网络功能卸载到专用硬件和软件上,增强了工作负载的性能和安全性。

  • R8g 实例非常适合内存密集型工作负载,如数据库、内存缓存和实时大数据分析。
  • M8g 实例非常适合应用程序服务器、微服务、游戏服务器、中型数据存储和缓存实例集等应用程序。
  • C8g 实例基于非常适合计算密集型工作负载,如高性能计算(HPC)、批处理、游戏、视频编码、科学建模、分布式分析、基于 CPU 的机器学习(ML)推理和广告投放。

与基于 Amazon Graviton3 的实例相比,性能提升高达 30%,能耗降低 60%。通过下图,您可以概览 Graviton4 和 R8g 实例相比上一代的改进和增强,您还可以通过查看 Amazon EC2 R8g 实例Amazon EC2 M8g 实例Amazon EC2 C8g 实例 和  Amazon Graviton Technical Guide 了解更多详细信息。

更多 Graviton 实例请查看 AWS Graviton 处理器

Redroid 简介

Redroid(Remote anDroid)是 AIC(Android In Cloud)解决方案。您可以在 Linux 主机中启动许多实例(Docker、podman、k8s 等)。同时支持 arm64 和 amd64 架构,适用于云游戏、虚拟化电话、自动化测试等。

在 Graviton 实例安装并启动 Redroid 容器

本文以 c8g 实例展示云手机环境的搭建过程,您可以此作为参考在其他 Graviton 实例完成环境搭建。

创建 EC2 实例

本次使用单实例测试环境,所有软件均部署在该实例。您可以参考教程:Amazon EC2 Linux 实例入门完成这台 EC2 实例的创建。

  • 实例规格和数量:1 * c8g.large(2 vCPU, 4GB 内存)
  • EBS 磁盘:20GB GP3(默认性能为 125MB/s 吞吐,3,000 IOPS)
  • 操作系统:Ubuntu 20.04

您可以在 Amazon EC2 AMI Locator 查找需要的 Ubuntu OS 对应的 AMI ID。

安装基础软件包

通过 SSH 登录到 EC2 实例(ubuntu 用户),执行下面命令安装必须的基础软件。

sudo su - root

安装 Docker 组件:

apt-get install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装内核模块:

apt install -y linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux 

检查内核模块状态:

lsmod | grep -e ashmem_linux -e binder_linux

关于其他操作系统下的部署指导请查看 Deploy redroid

安装 ADB 工具:

apt install -y adb

拉取 Redroid 容器镜像

您可以在 https://github.com/remote-android/redroid-doc 查询目前 Redroid 支持的 Android 版本,例如:

  • Android 15 (redroid/redroid:15.0.0-latest)
  • Android 15 64bit only (redroid/redroid:15.0.0_64only-latest)
  • Android 14 (redroid/redroid:14.0.0-latest)
  • Android 14 64bit only (redroid/redroid:14.0.0_64only-latest)
  • Android 13 (redroid/redroid:13.0.0-latest)
  • Android 13 64bit only (redroid/redroid:13.0.0_64only-latest)
  • Android 12 (redroid/redroid:12.0.0-latest)
  • Android 12 64bit only (redroid/redroid:12.0.0_64only-latest)
  • Android 11 (redroid/redroid:11.0.0-latest)
  • Android 10 (redroid/redroid:10.0.0-latest)
  • Android 9 (redroid/redroid:9.0.0-latest)
  • Android 8.1 (redroid/redroid:8.1.0-latest)

以 redroid/redroid:13.0.0_64only-latest 为例,拉取 docker 镜像:

docker pull redroid/redroid:13.0.0_64only-latest
docker images

启动 Redroid 容器

使用 docker run 命令启动 Redroid 容器

docker run -itd --privileged \
-v ~/data:/data -p 5555:5555 \
redroid/redroid:13.0.0_64only-latest \
androidboot.redroid_width=720 \
androidboot.redroid_height=1280 \
androidboot.redroid_dpi=320

其中的启动参数说明:

Param Description Default
androidboot.redroid_width 显示宽度 720
androidboot.redroid_height
显示高度 1280
androidboot.redroid_dpi 显示 DPI 320

您可以根据自己的显示需求进行设置,更多参数请参考 configuration

查看已经启动的容器:

docker ps -a

通过 adb 连接到本地 Redroid 容器模拟的 Android 设备:

adb connect localhost:5555

提示:请在 EC2 所在安全组的入站规则中放通 5555 端口。

在本地 PC 安装客户端工具

本章节以 MacOS 系统为例介绍如何安装客户端所需工具。

  • adb:Android 调试桥(adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。
  • scrcpy:Screen Copy 通过 USB 或 TCP/IP 连接的 Android 设备(视频和音频),并允许使用计算机的键盘和鼠标控制设备,它适用于 Linux、Windows 和 macOS。

安装 adb 和 scrcpy

brew install --cask android-platform-tools
brew install scrcpy

远程连接到 Redroid 容器

在 MacOS 的 Terminal 终端,通过 adb 连接已启动的 Redroid 容器:

adb connect <EC2实例的公网 IP 地址>:5555

通过 scrcpy 远程连接到 Redroid 容器:

scrcpy -s <EC2实例的公网 IP 地址>:5555 --no-audio --video-bit-rate=2M --max-size=1280

scrcpy 在本地 PC 弹出一个图形界面展示了 Android 界面:

您可以通过 User documentation 查看更多 scrcpy 参数和用法。

通过 adb 安装 App 应用

本章节演示如何通过 apk(Android Package) 文件来安装 Android App 应用

将 app.apk 文件拖拽到 Redroid 的图形界面,在终端界面会有对应的提示信息:

在安装完成后,在 Redroid 图形界面和终端界面也可以看到对应提示和 App:

打开 App 进行相应的操作:

本篇作者

袁泉

亚马逊云科技弹性计算解决方案架构师,主要负责亚马逊云科技弹性计算相关产品的技术咨询与方案设计。专注于弹性计算相关的产品和方向。