使用亚马逊云服务器在 G4 实例上运行 Android 应用程序

2023-09-21 19:29:04

随着 Android 应用程序和游戏变得越来越丰富,其中有些甚至比 PC 上的软件更易于使用和娱乐,因此许多人希望能够在云上运行 Android 游戏或应用程序,而在 EC2 实例上运行 Android 的解决方案可以让开发人员更轻松地测试和运行 Android 应用程序。在这篇博客文章中,我们将展示如何使用 NICE DCV 在 Anbox 中运行 Android 应用程序。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

Anbox 是免费的开源工具,让您可以在 Linux 上运行 Android 应用程序。NICE DCV 是一种高性能远程显示协议。它允许您在不同的网络条件下,将远程桌面和应用程序流从任何云或数据中心安全地传送到任何设备,而且在 Amazon EC2 实例上使用 NICE DCV 服务器不收取任何额外费用。另外,NICE DCV 也是 Amazon Web Services HPC 解决方案的重要组件,详见文档

部署演示

我们会使用快速入门的 “Ubuntu Server 18.04 LTS” 系统镜像进行部署并运行 Anbox。本次部署需要准备的前提条件包括:

-Amazon EC2 G4 实例

-Ubuntu Server 18.04 LTS

-NVIDIA gaming 驱动程序

-Lightdm 桌面环境

-NICE DCV

-Anbox

-OpenGApps

安装 NVIDIA gaming 驱动程序

在 Amazon EC2 控制台上点击启动实例,然后从快速入门中选择“Ubuntu Server 18.04 LTS”系统镜像,选择 g4dn.xlarge 或更高配置的 g4dn 实例类型启动实例。实例启动后使用密钥登陆Ubuntu系统。

步骤一:下载并安装 NVIDIA gaming 驱动,详见文档

sudo apt update
sudo apt-get upgrade -y linux-aws
sudo apt-get install -y gcc make linux-headers-$(uname -r)

在文件/etc/modprobe.d/blacklist.conf 末尾追加 blacklist:

cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
EOF

编辑文件/etc/default/grub,修改参数 GRUB_CMDLINE_LINUX:

GRUB_CMDLINE_LINUX="rdblacklist=nouveau"

更新 Grub 配置并重新启动:

sudo update-grub
sudo reboot

重启后重新登陆系统,解压驱动安装包并安装:

unzip ./GRID*.zip
chmod +x Linux/NVIDIA-Linux-x86_64*.run
sudo Linux/NVIDIA-Linux-x86_64*.run

注:注册 NVIDIA 驱动到 DKMS 中,并忽略与32位兼容库相关的错误。

安装完成后重启实例:

sudo reboot

步骤二:安装 ubuntu-desktop 和 lightdm 桌面显示管理器

sudo apt -y install ubuntu-desktop
sudo apt -y install lightdm

选择 lightdm 作为默认桌面显示管理器,并设置开机自动启动,然后再次重启实例:

sudo systemctl enable lightdm
sudo reboot

步骤三:安装 NICE DCV,详见文档

sudo apt install mesa-utils
wget https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY
gpg --import NICE-GPG-KEY
wget https://d1uj6qtbmh3dt5.cloudfront.net/2020.0/Servers/nice-dcv-2020.0-8428-ubuntu1804.tgz
tar -xvzf nice-dcv-2020.0-8428-ubuntu1804.tgz
cd nice-dcv-*
sudo apt -y install ./nice*.deb


安装完成后,启用 dcvgladmin 并设置 dcvserver 开机自动启动:

sudo dcvgladmin enable
sudo systemctl enable dcvserver
sudo systemctl restart dcvserver

步骤四:安装 Anbox,详见文档

git clone https://github.com/anbox/anbox-modules.git
cd anbox-modules
sudo cp anbox.conf /etc/modules-load.d/
sudo cp 99-anbox.rules /lib/udev/rules.d/
sudo cp -rT ashmem /usr/src/anbox-ashmem-1
sudo cp -rT binder /usr/src/anbox-binder-1
sudo dkms install anbox-ashmem/1
sudo dkms install anbox-binder/1
sudo reboot


内核升级后,我们需要重装 NVIDIA 驱动:

sudo /etc/init.d/lightdm stop
sudo Linux/NVIDIA-Linux-x86_64*.run


更新 xorg.conf 并重启:

sudo nvidia-xconfig --preserve-busid --enable-all-gpus
sudo reboot


现在您应该在/dev 目录下看到2个新的模块:

ls -alh /dev/binder /dev/ashmem


安装 Anbox:

sudo snap install --devmode --beta anbox

步骤五:安装 OpenGApps

您可以在 Anbox 中手动设置 Google Play Store 和对 ARM 应用程序的支持(通过 libhoudini),但这是一个相当复杂的过程。为了更容易地在 Anbox 上安装 Google Play Store 和 Google Play Services,并使其支持 ARM 应用程序和游戏(使用 libhoudini),geeks-r-us.de 创建了一个脚本以自动执行这些任务。

首先安装依赖软件包:

sudo apt install wget lzip unzip squashfs-tools


下载并运行脚本:

wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-playstore.sh
chmod +x install-playstore.sh

注:脚本 install-playstore.sh 中的参数“OPENGAPPS_RELEASEDATE“的值有可能存在滞后,您可以打开 sourceforge 链接以获取最新日期,例如最新发布的日期为2020年10月31号,则可以将参数“OPENGAPPS_RELEASEDATE”修改为:

OPENGAPPS_RELEASEDATE="20201031"

然后运行脚本安装,安装成功后重启实例:

sudo ./install-playstore.sh
sudo reboot

在启动 NICE DCV 会话之前,必须为会话的用户分配密码,例如设置用户 ubuntu 的密码:

sudo passwd ubuntu

为用户 ubuntu 分配会话:

sudo dcv create-session --type=console --owner ubuntu session1

显示活动会话的清单:

sudo dcv list-sessions

在开始连接 NICE DCV 之前,我们还需要将 TCP 端口8443的入站规则添加到安全组,并将该安全组与实例相关联。

步骤六:运行Android应用程序

使用 NICE DCV客户端(点击下载)连接实例,输入用户名和密码。进入 Ubuntu 图形界面后,在终端输入以下命令即可启动 Anbox:

anbox.appmgr

注:如果出现“Couldn’t find matching GLX visual”错误提示,运行以下命令修正:

glxinfo |grep -A10 Visuals

记下第一个 Visuals 值,例如0x021,然后 export 环境变量 SDL_VIDEO_X11_VISUALID 后重新运行 anbox.appmgr 即可:

export SDL_VIDEO_X11_VISUALID=0x021
anbox.appmgr

在 Anbox 应用程序管理器界面,转到 Settings > Apps > Google Play Services > Permissions,启用所有权限。同样转到 Google Play Store,启用所有权限。

现在返回 Anbox 主屏幕,打开 Google Play Store,登录并开始安装应用程序。下图是在 Anbox 中运行“ Kingdom Wars”的示例:

您还可以通过命令 nvidia-smi 查询 Anbox 的 GPU 使用率:

总结

Amazon EC2 G4 实例提供了极具成本效益的 GPU,并支持实时光线追踪技术,可以使游戏渲染更加高效和真实。借助 NICE DCV,我们可以将运行在 Anbox 上的 Android 应用程序流式传输到客户端计算机,从而消除对昂贵的专用工作站的需求。最后应注意的是,Anbox 仍处于开发阶段,并非所有 Android 应用程序都能在 Anbox 上正常运行。

文章来源:https://dev.amazoncloud.cn/column/article/650a826421a60a3e627e6b4a?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

更多推荐

nginx详解

目录1什么是nginx2Nginx功能2.1正向代理2.2反向代理2.3负载均衡2.4动静分离3区别4Docker安装nginx5nginx配置文件介绍1什么是nginxnginx是一个高性能的http和反向代理服务器,特点是占有内存少、并发能力强,事实上nginx的并发能力的确在同类的服务器中表现较好。nginx转为

聊一聊Twitter的雪花算法

什么是Twitter的雪花算法方法?这是一种在分布式系统中生成唯一ID的解决方案。Twitter在推文、私信、列表等方面使用这种方法。•ID是唯一且可排序的•ID包含时间信息(按日期排序)•ID适用于64位无符号整数•仅包含数字值符号位(1位):保留位(始终为0)。这可以为将来的请求保留。它可以潜在地用于使整体数字为正

vue柱状图+折线图组合

<template><divid="main"style="width:100%;height:500px;padding-top:.6rem"></div></template>data(){return{weekData:["1周","2周","3周","4周","5周","6周","7周","8周","9周","

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境为什么要写这个?封装这个控制台日志打印工具,主要是在项目中自己做的SDK需要提供给其他开发人员使用,加入了日志美化和打印打开,方便了开发人员查找SDK中的日志(提高了逼格),也加深了自己对日志关键性的理解。首先讲下封装时遇到的一些问题

【力扣】27. 移除元素

题目描述给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」

ddos打到高防cdn上会发生什么

ddos打到cdn上会发生什么?当DDoS攻击打到CDN上时,肯定会影响网站的可用性和用户体验。具体DDoS攻击打到CDN上时,会发生以下情况:CDN节点负载增加:DDoS攻击会导致大量的无效流量涌入CDN节点,从而使得节点负载增加。这可能会导致节点响应变慢,甚至出现崩溃、停止响应等情况。影响用户访问:如果DDoS攻击

ArcGIS Engine:C#基础语法的了解

目录01前言02实验2.1创建“HelloWorld”程序2.2创建程序,完成成绩评定功能2.3创建程序,完成1到100的累加2.4窗体应用程序01前言学了一些语言了,确实发现,语言只是工具,只有你作为初恋的语言值得你花大量时间去深究。而对于其他作为应用或者说只是作为桥梁的语言去学习其他内容的课程,没有必要过分深究语言

Spring Task

Spring框架提供了一套任务调度的功能,可以帮助开发者实现定时任务和异步任务的管理和调度。任务调度是指按照预定的时间表执行某个任务或一系列任务,Spring的任务调度模块可以在应用程序中方便地配置和管理这些任务。Spring框架中任务调度的核心是通过TaskScheduler接口和@Scheduled注解来定义和执行

OpenHarmony ArkTS工程目录结构(Stage模型)

一、应用工程结构图片来源:OpenHarmony官网AppScope>app.json5:应用的全局配置信息。entry:OpenHarmony工程模块,编译构建生成一个HAP包。src>main>ets:用于存放ArkTS源码。src>main>ets>entryability:应用/服务的入口。src>main>e

Java拦截器与过滤器的区别

主要结论:运行顺序不同,过滤器先,拦截器后配置方式不同,过滤器web.xml,拦截器spring的配置文件过滤器依赖于servlet,拦截器依赖于Spring过滤器只能对request和response响应,拦截器还能对springmvc生态下的组件做处理。(说人话就是咱们现在用的都是人家spring的产品,那么拦截器

golang入门笔记——pprof性能分析

文章目录简介runtime/pprof的使用命令行交互网络服务性能分析pprof与性能测试结合压测工具go-wrk简介golang性能分析工具pprof的8个指标1.性能分析的5个方面:CPU、内存、I/O、goroutine(协程使用情况和泄漏检查)、死锁检测以及数据竟态分析runtime.SetMutexProfi

热文推荐