• 沒有找到結果。

将某台云手机内的APP共享安装至多台云手机

N/A
N/A
Protected

Academic year: 2022

Share "将某台云手机内的APP共享安装至多台云手机"

Copied!
46
0
0

加載中.... (立即查看全文)

全文

(1)

最佳实践

文档版本 04

发布日期 2021-09-01

(2)

版权所有 © 华为技术有限公司 2021。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

(3)

目 录

1 云手机接入最佳实践... 1

1.1 创建云手机服务器... 1

1.2 连接云手机并获取云手机画面...6

1.3 云手机应用部署...8

1.3.1 获取云手机列表... 8

1.3.2 为单台云手机安装应用... 9

1.3.3 生成应用版本 tar 包并推至 OBS 桶... 10

1.3.4 部署应用... 11

1.3.5 更新应用版本... 12

2 云手游接入最佳实践... 13

2.1 创建云手游服务器... 13

2.2 游戏部署... 18

2.2.1 获取云手机列表...18

2.2.2 为单台云手机安装应用...19

2.2.3 生成应用版本 tar 包并推至 OBS 桶... 20

2.2.4 部署应用... 20

2.2.5 更新应用版本... 21

2.3 游戏接入... 22

2.4 实例调度... 23

2.5 运营运维... 24

3 批量安装应用至云手机... 25

4 修改云手机的 GPS 定位信息... 29

5 使用云手机进行云手游系统建设...30

6 使用云手机摄像头... 32

7 通过 STF 批量管理云手机...35

A 读取 OBS 桶数据资源... 40

B 向 OBS 桶上传数据资源... 42

C 修订记录... 43

(4)

1 云手机接入最佳实践

1.1 创建云手机服务器

操作步骤

1. 登录管理控制台。

2. 在服务列表页,选择“计算 > 云手机 CPH”。

3. 在左侧导航栏选择“服务器管理”,单击右上角的“购买服务器实例”。

4. 根据界面提示,完成基础配置,如表1-1。

1-1 参数说明

参数 参数说明 样例

计费模式 服务器仅支持一种计费类型:包

年/包月。 包年/包月

区域 不同区域的云服务产品之间内网 互不相通。建议您选择最靠近您 业务的区域,这样可以减少网络 时延、提高访问速度。

需要注意:服务器购买成功后不 能更换区域。

华东-上海一

可用区 指在同一区域下,电力、网络隔 离的物理区域,可用区之间内网 互通,不同可用区之间物理隔 离。

● 如果您需要提高应用的高可用 性,建议您将服务器创建在不 同的可用区。

● 如果您需要较低的网络时延,

建议您将服务器创建在相同的 可用区。

可用区1

最佳实践 1 云手机接入最佳实践

(5)

参数 参数说明 样例 服务器类型 包括云手机服务器和云手游服务

器,请根据业务场景进行选择。

详情请参见“规格”。

云手机服务器 physical.rx1.xlarge

实例规格 请根据业务场景进行选择。 rx1.cp.c60.d10.e1v1 手机镜像 云手机实例运行的操作系统,目

前只支持Android系统,其他手机 系统由于商业授权缘故,不能提 供。

AOSP7.1.1

购买量 ● 服务器的数量,一次最多可购 买10台服务器。

● 购买时长:可选取的时间范围 为1个月~3年。

服务器数量:1 购买时长:6个月

5. 单击“下一步:网络配置”。根据界面提示,完成网络配置。

“西南-贵阳一”区域已上线自定义网络功能,推荐您使用自定义网络配置,如表

1-2所示。

其中physical.rx1系列服务器qemu类型的手机规格暂不支持自定义网络,采用系 统定义网络配置如表1-3所示。

说明

云手机网络配置分为两种模式:

● 自定义网络:自定义网络是云手机全新一代网络配置管理模式,支持您复用已有的VPC 网络管理云手机服务器,支持云手机服务器复用您已购买的共享带宽等资源,自定义网 络当前仅支持“西南-贵阳一”区域。

● 系统定义网络:系统定义网络是云手机第一代网络模式,由系统为您的云手机服务器自 动创建VPC网络及带宽,不支持复用您已有的VPC网络及带宽资源。

1-2 自定义网络配置(当前仅支持“西南-贵阳一”区域)

参数 参数说明 样例

网络 在下拉列表中选择可用的虚拟私有云、子网,并设置 私有IP地址的分配方式。

云手机网络使用虚拟私有云(VPC)提供的网络,包 括子网、安全组等。您可以选择使用已有的虚拟私有 云网络,或者创建新的虚拟私有云。

(6)

参数 参数说明 样例 安全组授

权 云手机服务将为您创建一个“cph_admin_trust”委 托,该委托包含的权限为:“VPC FullAccess”。

授权云手机服务为您创建委托,需确定您的登录用户 具有“Security Administrator”权限或者具备创建委 托的细粒度权限“iam:agencies:createAgency”。

了解更多请参考权限管理。

云手机服务将使用该委托完成如下操作:

● 为云手机/云游戏实例创建弹性网卡、弹性公网 IP、虚拟IP。

● 为云手机/云手游服务器创建默认安全组,并设置 安全组开放端口范围,该端口开放范围将映射到每 个云手机/云游戏实例以支持实例开放应用访问端 口。

说明同一VPC下的弹性云服务器默认无法通过1-9999端口访 问云手机/云游戏实例,若想放开此限制,请参考使用自 定义网络的安全组授权规则添加高优先级的安全组规 则。

弹性公网IP ● 现在购买:为云手机购买新的弹性公网IP。 现在购买

线路 ● 静态BGP中的网络结构发生变化,运营商无法在第 一时间自动调整网络设置以保障用户的体验度。

● 全动态BGP可根据设定的寻路协议第一时间自动优 化网络结构,以保持客户使用的网络持续稳定、高 效。

全动态BGP

公网带宽 ● 独享带宽:按照实际使用的流量来计费。

● 共享带宽:一个带宽中可以加入多个弹性公网IP,

多个弹性公网IP共用一个带宽。

共享带宽

带宽大小 可选带宽范围:1-2000 Mbit/s。 300 Mbit/s 带宽名称 “公网带宽”选择“共享带宽”时,请在下拉框中选

择已有的共享带宽名称。 bandwidt

h-001

最佳实践 1 云手机接入最佳实践

(7)

1-3 系统定义网络配置

参数 参数说明 样例

带宽类型 ● 独享带宽:用户购买的每一台服务器所独 立使用的网络带宽,适用于有较大规模数 据流量和访问量,对带宽要求较高的场 景。

● 共享带宽:用户名下的多台服务器所共用 的网络带宽,适用于多业务流量错峰分布 场景,可为企业节省公网带宽使用成本。

共享带宽

创建方式 包括“已有共享带宽”和“新建共享带宽”。

在第一次使用共享带宽购买服务器时,请选择

“新建共享带宽”。

新建共享带宽

计费方式 独享目前仅支持按流量计费,共享带宽目前仅 支持按带宽计费。

● 按流量计费:指定带宽上限,按实际使用 的出公网流量计费,与使用时间无关。

● 按带宽计费:按照带宽大小和使用时长计 费,未包含在服务器费用内。

按带宽计费

带宽 独享带宽参数,指带宽上限,固定取值为300

Mbit/s。 300 Mbit/s

带宽名称 ● “创建方式”选择“已有共享带宽”时,

请在下拉框中选择已有的共享带宽名称。

已有的共享带宽上会显示当前已关联的服 务器数量,方便您选择。

● “创建方式”选择“新建共享带宽”时,

请在文本框中输入共享带宽的名称。

whole- bandwidth- xxxx

带宽大小 “创建方式”选择“新建共享带宽”时,需要 设置此参数。

带宽大小越大,费用越高,请您按照业务需要 进行合理设置。

5 Mbit/s

说明

系统定义网络仅供云手机所在服务器使用,您无法在您VPC服务下看到相关网络带宽信 息。

6. 单击“下一步:高级配置”。根据界面提示,完成高级配置,如表1-4所示。

(8)

1-4 参数说明

参数 参数说明 样例

名称 为您购买的服务器和云手机实例命名,名称不可 重复。

命名规则:购买服务器后,名称自动按序增加数 字后缀;服务器对应的云手机实例则自动按序增 加5位数字后缀。

例如,您购买了1台服务器,该服务器对应60台 云手机,名称输入CPH。则,服务器名称为 CPH-1,云手机实例的名称为

CPH-1-00001~CPH-1-00060。

CPH

密钥对 使用密钥对(Key Pair)进行远程登录身份验 证。

● 如果您已经创建过密钥对,并且本地已妥善 保存私钥文件(.pem格式),可以在下拉列 表选择已有密钥对。

● 如果您从未创建过密钥对,请单击“新建密 钥对”,跳转至云服务器控制台进行新建。

然后返回该页面,刷新下拉列表,选择创建 好的密钥对。

私钥用于远程登录身份认证,为保证安全,

私钥文件(.pem格式)只能下载一次,请妥 善保管。更多关于密钥对的介绍请参见“创 建密钥对”。

KeyPair- test

VNC登录 开启后,可通过VNC的方式连接云手机。

说明

部分云手机规格不支持此功能,支持的规格请参见支 持VNC登录的云手机规格有哪些?。

-

应用端口 高级配置勾选“应用端口”时,该参数可配。适 用于云手机需要对外提供服务的场景。

● 应用名称:支持大小写英文字母。不能为关 键字“ADB”和“VNC”,大小写的任意组 合都不行。

● 端口号:在0~65535之间。

● 公网访问

– 勾选时,表示可通过公网访问云手机该应 用端口,即云手机对应的端口以及相对应 的服务器公网端口直接暴露在公网,无需 鉴权即可互通。

– 不勾选时,表示只能通过租户的私有网络 访问。

注意

● 请谨慎勾选“公网访问”,确保在勾选前已做 好安全控制。

● 云手机服务未对客户选择打开的端口做任何安 全鉴权。

key 10001 不勾选

最佳实践 1 云手机接入最佳实践

(9)

7. 单击“下一步:确认订单”,您可再次核对信息。

– 确认无误后,单击“立即购买”。

– 如果还需要修改,单击“上一步”,修改参数。

8. 根据界面提示,完成支付。

大约需要20~30分钟,购买服务器成功后,系统会自动创建好云手机。

云手机状态变为“运行中”时,表示云手机实例可使用。

1.2 连接云手机并获取云手机画面

Airtest是跨平台UI自动化编译器,由于VNC协议的带宽要求高、损耗手机性能等缺 点,Monbox架构云手机不支持通过VNC协议访问。建议您使用Airtest工具快速获取云 手机画面。

前提条件

● 已购买并通过ADB方式登录云手机。详细操作请参见“购买云手机”。

● 已在本地PC安装Airtest工具。

说明

登录Airtest官网(https://airtest.netease.com/),下载符合您操作系统的版本并安装。

● 已关闭ADB连接的命令行窗口,并保证SSH隧道建立成功。

操作步骤

1. 在Airtest主页单击“刷新ADB”,出现已连接的移动设备:

1-1 Airtest 主页

2. 如果没有出现您想要连接的设备,可选择下方的“远程设备连接”,然后手动输 入对应云手机的ADB连接命令,如图1-2。

(10)

adb connect 127.0.0.1:1234

其中,1234为建立SSH隧道时所使用的本地空闲端口。

1-2 远程设备连接

单击右侧的“连接”后,“移动设备列表”中即会出现所需连接的云手机。

注意

请确保ADB连接的命令行窗口已关闭,否则会连接失败;并且保证SSH隧道建立 成功,否则即使已识别出移动设备,“ADB Status”也会出现“offline”状态,

导致无法获取云手机画面。

3. 在已识别的移动设备列表中单击对应设备右侧的“connect”,即可获取云手机画 面:

1-3 移动设备列表

最佳实践 1 云手机接入最佳实践

(11)

1-4 云手机画面

4. 若通过ADB连接了多台云手机,需要切换画面,可单击右上角的切换图标进行切 换。

1-5 切换云手机

1.3 云手机应用部署

1.3.1 获取云手机列表

参考《云手机API参考》的“查询云手机列表”章节获取云手机列表。

(12)

接口示例

GET https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones?

phone_name={phone_name}&server_id={server_id}&status={status}&offset={offset}&limit={limit}&type={typ e}Header:

Content-Type: application/json X-Auth-Token: $token

其中,

● CPH Endpoint为Endpoint列表中CPH对应区域的终端节点,如华北-北京四为 cph.cn-north-4.myhuaweicloud.com。

● project_id为云手游服务器所属区域对应的项目ID,如

083e9f825e80f50c2f96c0045edc70e8。可通过如下方式获取:

a. 登录管理控制台。

b. 单击右上角用户名下的“我的凭证”。

c. 在“API凭证”页面的项目列表中获取项目ID。

1-6 获取项目 ID

● URL中"?"之后的部分为可选参数。

● $token为获取token接口的响应结果。

接口使用示例

GET https://cph.cn-north-4.myhuaweicloud.com/v1/083e9f825e80f50c2f96c0045edc70e8/cloud-phone/

phones Header:

Content-Type: application/json X-Auth-Token: $token

说明

$token需要换成实际获取到的token值;此处未指定phone_name、server_id等参数信息。

1.3.2 为单台云手机安装应用

参考《云手机API参考》的“安装apk”章节为单台云手机安装应用。

前提条件

● 云手游服务器所在Region的OBS桶中已经存放好对应的APK安装包。否则,需要 上传安装包,可参考https://support.huaweicloud.com/qs-obs/

obs_qs_0002.html进行上传。

最佳实践 1 云手机接入最佳实践

(13)

● 确保已经配置好OBS桶的授权策略,具体操作请参考读取OBS桶数据资源章节。

接口示例

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/commands Header:

Content-Type: application/json X-Auth-Token: $token Body:

{ "command": "install",

"content": "-t -r obs://{bucket_name}/{object_path}", "phone_ids": [

"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

] }

其中,

● CPH Endpoint、project_id、$token等参数取值可以参考获取云手机列表章节的 说明获取。

● bucket_name为对象存储服务OBS的桶名,object_path为游戏apk安装包的存放 路径。

● phone_ids为需要安装应用的云手机ID(通过获取云手机列表获得,可以填多个,

填多个则为多台云手机安装apk应用)。

接口使用示例

POST https://cph.cn-east-3.myhuaweicloud.com/v1/081ceeb7fb800f0c2f4cc004bb39c2f7/cloud-phone/

phones/commands

Content-Type: application/json X-Auth-Token: $token { "command": "install",

"content": "-t -r obs://yzw-apk-install/apk/com.hermes.bgame.apk", "phone_ids": [

"bdc2f2e960164dd9a2765374afeea300"

] }

● yzw-apk-install为OBS桶名,apk/com.hermes.bgame.apk为安装包存放路径,

obs://yzw-apk-install/apk/com.hermes.bgame.apk为游戏安装包全路径。

● $token需要换成实际获取到的token值。

1.3.3 生成应用版本 tar 包并推至 OBS 桶

前提条件

● 需确保云手机已安装对应的应用。

● 确保已配置好OBS桶的授权策略,具体操作请参考向OBS桶上传数据资源章节。

接口示例

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/batch-storage Header:

Content-Type: application/json X-Auth-Token: $token Body:

{ "storage_infos": [{

"phone_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

(14)

"include_files": [

"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/data/data/${package_name}",

"/data/media/0/Android/data/${package_name}"

],

"bucket_name": "${bucket_name}",

"object_path": "apk/${package_name}_${version_name}.tar"

}]

}

其中,

● CPH Endpoint、project_id、$token、bucket_name、object_path等参数可以参 考为单台云手机安装应用章节的说明获取。

● package_name为当前应用的包名,version_name为当前应用的版本号(可自定 义)。

● object_path为游戏tar包上传的目的路径(注意:apk为任意已存在文件夹,$

{package_name}_${version_name}.tar中除.tar后缀外,其余内容需根据实际名称 来修改)。

● 如上示例中,include_files的四个元素为固定路径。

● 如果该游戏的安装包为xapk类型,则需要在include_files中增加“/data/

media/obb/${package_name}”路径。

● phone_id为安装了对应游戏的云手机ID。

1.3.4 部署应用

推送tar包至服务器,即将文件“apk/${package_name}_${version_name}.tar”推送 到服务器(${server_id1}和${server_id2})的共享存储中。

接口示例

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/share-files Header:

Content-Type: application/json X-Auth-Token: $token Body:

{ "bucket_name":${bucket_name},

"object_path": "apk/${package_name}_${version_name}.tar", "server_ids": [

"${server_id1}", "${server_id2}"

] }

其中,

● CPH Endpoint、project_id、$token、bucket_name、object_path等参数可以参 考4.2 为单台云手机安装应用的说明获取。

● package_name为当前应用的包名,version_name为当前应用的版本号(可自定 义)。

● object_path为游戏tar包上传的目的路径。

说明

apk为任意已存在文件夹,${package_name}_${version_name}.tar中除.tar后缀外,其余 内容需根据实际名称来修改。

最佳实践 1 云手机接入最佳实践

(15)

● server_ids为部署应用版本的目标服务器ID列表,可以填写多个,服务器ID可通过

“查询云手机服务器列表”接口获得。

使用示例

参考《云手机API参考》的“推送共享存储文件”章节。

后续操作

参考《云手机API参考》“重置云手机”接口,批量重置所有云手机。

1.3.5 更新应用版本

更新应用版本,需要先删除服务器上的旧版本应用,然后重新部署新版本应用。

删除旧版本应用

● 接口示例:

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/share-files Header:

Content-Type: application/json X-Auth-Token: ${token}

Body:

{ "file_paths": [

"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/data/data/${package_name}",

"/data/media/0/Android/data/${package_name}"

],

"server_ids": [ "${server_id1}", "${server_id2}"

] }

删除服务器(${server_id1}和${server_id2})共享存储中的文件,文件列表包 含:"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/

data/data/${package_name}", "/data/media/0/Android/data/$

{package_name}"。

其中,

– CPH Endpoint、project_id、$token等参数可以参考为单台云手机安装应用 的说明获取。

– file_paths的内容等同于生成应用版本tar包并推至OBS桶中的include_files,

其中package_name为当前应用的包名。

– server_ids为部署应用版本的目标服务器ID列表,可以填写多个,服务器ID可通 过“查询云手机服务器列表”接口获得。

● 使用示例:

参考《云手机API参考》的“删除共享存储文件”章节。

部署新版本应用

参考部署应用来部署应用。

(16)

2 云手游接入最佳实践

2.1 创建云手游服务器

操作步骤

1. 登录管理控制台。

2. 在服务列表页,选择“计算 > 云手机 CPH”。

3. 在左侧导航栏选择“服务器管理”,单击右上角的“购买服务器实例”。

4. 根据界面提示,完成基础配置,如表2-1。

2-1 参数说明

参数 参数说明 样例

计费模式 服务器仅支持一种计费类型:包

年/包月。 包年/包月

区域 不同区域的云服务产品之间内网 互不相通。建议您选择最靠近您 业务的区域,这样可以减少网络 时延、提高访问速度。

需要注意:服务器购买成功后不 能更换区域。

华东-上海一

可用区 指在同一区域下,电力、网络隔 离的物理区域,可用区之间内网 互通,不同可用区之间物理隔 离。

● 如果您需要提高应用的高可用 性,建议您将服务器创建在不 同的可用区。

● 如果您需要较低的网络时延,

建议您将服务器创建在相同的 可用区。

可用区1

最佳实践 2 云手游接入最佳实践

(17)

参数 参数说明 样例 服务器类型 包括云手机服务器和云手游服务

器,请根据业务场景进行选择。

详情请参见“规格”。

云手机服务器 physical.rx1.xlarge

实例规格 请根据业务场景进行选择。 rx1.cp.c60.d10.e1v1 手机镜像 云手机实例运行的操作系统,目

前只支持Android系统,其他手机 系统由于商业授权缘故,不能提 供。

AOSP7.1.1

购买量 ● 服务器的数量,一次最多可购 买10台服务器。

● 购买时长:可选取的时间范围 为1个月~3年。

服务器数量:1 购买时长:6个月

5. 单击“下一步:网络配置”。根据界面提示,完成网络配置。

“西南-贵阳一”区域已上线自定义网络功能,推荐您使用自定义网络配置,如表

2-2所示。

其中physical.rx1系列服务器qemu类型的手机规格暂不支持自定义网络,采用系 统定义网络配置如表2-3所示。

说明

云手机网络配置分为两种模式:

● 自定义网络:自定义网络是云手机全新一代网络配置管理模式,支持您复用已有的VPC 网络管理云手机服务器,支持云手机服务器复用您已购买的共享带宽等资源,自定义网 络当前仅支持“西南-贵阳一”区域。

● 系统定义网络:系统定义网络是云手机第一代网络模式,由系统为您的云手机服务器自 动创建VPC网络及带宽,不支持复用您已有的VPC网络及带宽资源。

2-2 自定义网络配置(当前仅支持“西南-贵阳一”区域)

参数 参数说明 样例

网络 在下拉列表中选择可用的虚拟私有云、子网,并设置 私有IP地址的分配方式。

云手机网络使用虚拟私有云(VPC)提供的网络,包 括子网、安全组等。您可以选择使用已有的虚拟私有 云网络,或者创建新的虚拟私有云。

(18)

参数 参数说明 样例 安全组授

权 云手机服务将为您创建一个“cph_admin_trust”委 托,该委托包含的权限为:“VPC FullAccess”。

授权云手机服务为您创建委托,需确定您的登录用户 具有“Security Administrator”权限或者具备创建委 托的细粒度权限“iam:agencies:createAgency”。

了解更多请参考权限管理。

云手机服务将使用该委托完成如下操作:

● 为云手机/云游戏实例创建弹性网卡、弹性公网 IP、虚拟IP。

● 为云手机/云手游服务器创建默认安全组,并设置 安全组开放端口范围,该端口开放范围将映射到每 个云手机/云游戏实例以支持实例开放应用访问端 口。

说明同一VPC下的弹性云服务器默认无法通过1-9999端口访 问云手机/云游戏实例,若想放开此限制,请参考使用自 定义网络的安全组授权规则添加高优先级的安全组规 则。

弹性公网IP ● 现在购买:为云手机购买新的弹性公网IP。 现在购买

线路 ● 静态BGP中的网络结构发生变化,运营商无法在第 一时间自动调整网络设置以保障用户的体验度。

● 全动态BGP可根据设定的寻路协议第一时间自动优 化网络结构,以保持客户使用的网络持续稳定、高 效。

全动态BGP

公网带宽 ● 独享带宽:按照实际使用的流量来计费。

● 共享带宽:一个带宽中可以加入多个弹性公网IP,

多个弹性公网IP共用一个带宽。

共享带宽

带宽大小 可选带宽范围:1-2000 Mbit/s。 300 Mbit/s 带宽名称 “公网带宽”选择“共享带宽”时,请在下拉框中选

择已有的共享带宽名称。 bandwidt

h-001

最佳实践 2 云手游接入最佳实践

(19)

2-3 系统定义网络配置

参数 参数说明 样例

带宽类型 ● 独享带宽:用户购买的每一台服务器所独 立使用的网络带宽,适用于有较大规模数 据流量和访问量,对带宽要求较高的场 景。

● 共享带宽:用户名下的多台服务器所共用 的网络带宽,适用于多业务流量错峰分布 场景,可为企业节省公网带宽使用成本。

共享带宽

创建方式 包括“已有共享带宽”和“新建共享带宽”。

在第一次使用共享带宽购买服务器时,请选择

“新建共享带宽”。

新建共享带宽

计费方式 独享目前仅支持按流量计费,共享带宽目前仅 支持按带宽计费。

● 按流量计费:指定带宽上限,按实际使用 的出公网流量计费,与使用时间无关。

● 按带宽计费:按照带宽大小和使用时长计 费,未包含在服务器费用内。

按带宽计费

带宽 独享带宽参数,指带宽上限,固定取值为300

Mbit/s。 300 Mbit/s

带宽名称 ● “创建方式”选择“已有共享带宽”时,

请在下拉框中选择已有的共享带宽名称。

已有的共享带宽上会显示当前已关联的服 务器数量,方便您选择。

● “创建方式”选择“新建共享带宽”时,

请在文本框中输入共享带宽的名称。

whole- bandwidth- xxxx

带宽大小 “创建方式”选择“新建共享带宽”时,需要 设置此参数。

带宽大小越大,费用越高,请您按照业务需要 进行合理设置。

5 Mbit/s

说明

系统定义网络仅供云手机所在服务器使用,您无法在您VPC服务下看到相关网络带宽信 息。

6. 单击“下一步:高级配置”。根据界面提示,完成高级配置,如表2-4所示。

(20)

2-4 参数说明

参数 参数说明 样例

名称 为您购买的服务器和云手机实例命名,名称不可 重复。

命名规则:购买服务器后,名称自动按序增加数 字后缀;服务器对应的云手机实例则自动按序增 加5位数字后缀。

例如,您购买了1台服务器,该服务器对应60台 云手机,名称输入CPH。则,服务器名称为 CPH-1,云手机实例的名称为

CPH-1-00001~CPH-1-00060。

CPH

密钥对 使用密钥对(Key Pair)进行远程登录身份验 证。

● 如果您已经创建过密钥对,并且本地已妥善 保存私钥文件(.pem格式),可以在下拉列 表选择已有密钥对。

● 如果您从未创建过密钥对,请单击“新建密 钥对”,跳转至云服务器控制台进行新建。

然后返回该页面,刷新下拉列表,选择创建 好的密钥对。

私钥用于远程登录身份认证,为保证安全,

私钥文件(.pem格式)只能下载一次,请妥 善保管。更多关于密钥对的介绍请参见“创 建密钥对”。

KeyPair- test

VNC登录 开启后,可通过VNC的方式连接云手机。

说明

部分云手机规格不支持此功能,支持的规格请参见支 持VNC登录的云手机规格有哪些?。

-

应用端口 高级配置勾选“应用端口”时,该参数可配。适 用于云手机需要对外提供服务的场景。

● 应用名称:支持大小写英文字母。不能为关 键字“ADB”和“VNC”,大小写的任意组 合都不行。

● 端口号:在0~65535之间。

● 公网访问

– 勾选时,表示可通过公网访问云手机该应 用端口,即云手机对应的端口以及相对应 的服务器公网端口直接暴露在公网,无需 鉴权即可互通。

– 不勾选时,表示只能通过租户的私有网络 访问。

注意

● 请谨慎勾选“公网访问”,确保在勾选前已做 好安全控制。

● 云手机服务未对客户选择打开的端口做任何安 全鉴权。

key 10001 不勾选

最佳实践 2 云手游接入最佳实践

(21)

7. 单击“下一步:确认订单”,您可再次核对信息。

– 确认无误后,单击“立即购买”。

– 如果还需要修改,单击“上一步”,修改参数。

8. 根据界面提示,完成支付。

大约需要20~30分钟,购买服务器成功后,系统会自动创建好云手机。

云手机状态变为“运行中”时,表示云手机实例可使用。

2.2 游戏部署

2.2.1 获取云手机列表

参考《云手机API参考》的“查询云手机列表”章节获取云手机列表。

接口示例

GET https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones?

phone_name={phone_name}&server_id={server_id}&status={status}&offset={offset}&limit={limit}&type={typ e}Header:

Content-Type: application/json X-Auth-Token: $token

其中,

● CPH Endpoint为Endpoint列表中CPH对应区域的终端节点,如华北-北京四为 cph.cn-north-4.myhuaweicloud.com。

● project_id为云手游服务器所属区域对应的项目ID,如

083e9f825e80f50c2f96c0045edc70e8。可通过如下方式获取:

a. 登录管理控制台。

b. 单击右上角用户名下的“我的凭证”。

c. 在“API凭证”页面的项目列表中获取项目ID。

2-1 获取项目 ID

● URL中"?"之后的部分为可选参数。

● $token为获取token接口的响应结果。

(22)

接口使用示例

GET https://cph.cn-north-4.myhuaweicloud.com/v1/083e9f825e80f50c2f96c0045edc70e8/cloud-phone/

phones Header:

Content-Type: application/json X-Auth-Token: $token

说明

$token需要换成实际获取到的token值;此处未指定phone_name、server_id等参数信息。

2.2.2 为单台云手机安装应用

参考《云手机API参考》的“安装apk”章节为单台云手机安装应用。

前提条件

● 云手游服务器所在Region的OBS桶中已经存放好对应的APK安装包。否则,需要 上传安装包,可参考https://support.huaweicloud.com/qs-obs/

obs_qs_0002.html进行上传。

● 确保已经配置好OBS桶的授权策略,具体操作请参考读取OBS桶数据资源章节。

接口示例

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/commands Header:

Content-Type: application/json X-Auth-Token: $token Body:

{ "command": "install",

"content": "-t -r obs://{bucket_name}/{object_path}", "phone_ids": [

"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

] }

其中,

● CPH Endpoint、project_id、$token等参数取值可以参考获取云手机列表章节的 说明获取。

● bucket_name为对象存储服务OBS的桶名,object_path为游戏apk安装包的存放 路径。

● phone_ids为需要安装应用的云手机ID(通过获取云手机列表获得,可以填多个,

填多个则为多台云手机安装apk应用)。

接口使用示例

POST https://cph.cn-east-3.myhuaweicloud.com/v1/081ceeb7fb800f0c2f4cc004bb39c2f7/cloud-phone/

phones/commands

Content-Type: application/json X-Auth-Token: $token { "command": "install",

"content": "-t -r obs://yzw-apk-install/apk/com.hermes.bgame.apk", "phone_ids": [

"bdc2f2e960164dd9a2765374afeea300"

] }

● yzw-apk-install为OBS桶名,apk/com.hermes.bgame.apk为安装包存放路径,

obs://yzw-apk-install/apk/com.hermes.bgame.apk为游戏安装包全路径。

最佳实践 2 云手游接入最佳实践

(23)

● $token需要换成实际获取到的token值。

2.2.3 生成应用版本 tar 包并推至 OBS 桶

前提条件

● 需确保云手机已安装对应的应用。

● 确保已配置好OBS桶的授权策略,具体操作请参考向OBS桶上传数据资源章节。

接口示例

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/batch-storage Header:

Content-Type: application/json X-Auth-Token: $token Body:

{ "storage_infos": [{

"phone_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "include_files": [

"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/data/data/${package_name}",

"/data/media/0/Android/data/${package_name}"

],

"bucket_name": "${bucket_name}",

"object_path": "apk/${package_name}_${version_name}.tar"

}]

}

其中,

● CPH Endpoint、project_id、$token、bucket_name、object_path等参数可以参 考为单台云手机安装应用章节的说明获取。

● package_name为当前应用的包名,version_name为当前应用的版本号(可自定 义)。

● object_path为游戏tar包上传的目的路径(注意:apk为任意已存在文件夹,$

{package_name}_${version_name}.tar中除.tar后缀外,其余内容需根据实际名称 来修改)。

● 如上示例中,include_files的四个元素为固定路径。

● 如果该游戏的安装包为xapk类型,则需要在include_files中增加“/data/

media/obb/${package_name}”路径。

● phone_id为安装了对应游戏的云手机ID。

2.2.4 部署应用

推送tar包至服务器,即将文件“apk/${package_name}_${version_name}.tar”推送 到服务器(${server_id1}和${server_id2})的共享存储中。

接口示例

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/share-files Header:

Content-Type: application/json X-Auth-Token: $token Body:

{ "bucket_name":${bucket_name},

(24)

"object_path": "apk/${package_name}_${version_name}.tar", "server_ids": [

"${server_id1}", "${server_id2}"

] }

其中,

● CPH Endpoint、project_id、$token、bucket_name、object_path等参数可以参 考4.2 为单台云手机安装应用的说明获取。

● package_name为当前应用的包名,version_name为当前应用的版本号(可自定 义)。

● object_path为游戏tar包上传的目的路径。

说明

apk为任意已存在文件夹,${package_name}_${version_name}.tar中除.tar后缀外,其余 内容需根据实际名称来修改。

● server_ids为部署应用版本的目标服务器ID列表,可以填写多个,服务器ID可通过

“查询云手机服务器列表”接口获得。

使用示例

参考《云手机API参考》的“推送共享存储文件”章节。

后续操作

参考《云手机API参考》“重置云手机”接口,批量重置所有云手机。

2.2.5 更新应用版本

更新应用版本,需要先删除服务器上的旧版本应用,然后重新部署新版本应用。

删除旧版本应用

● 接口示例:

POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/share-files Header:

Content-Type: application/json X-Auth-Token: ${token}

Body:

{ "file_paths": [

"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/data/data/${package_name}",

"/data/media/0/Android/data/${package_name}"

],

"server_ids": [ "${server_id1}", "${server_id2}"

] }

删除服务器(${server_id1}和${server_id2})共享存储中的文件,文件列表包 含:"/data/app/${package_name}-1", "/data/app/${package_name}-2", "/

data/data/${package_name}", "/data/media/0/Android/data/$

{package_name}"。

其中,

最佳实践 2 云手游接入最佳实践

(25)

– CPH Endpoint、project_id、$token等参数可以参考为单台云手机安装应用 的说明获取。

– file_paths的内容等同于生成应用版本tar包并推至OBS桶中的include_files,

其中package_name为当前应用的包名。

– server_ids为部署应用版本的目标服务器ID列表,可以填写多个,服务器ID可通 过“查询云手机服务器列表”接口获得。

● 使用示例:

参考《云手机API参考》的“删除共享存储文件”章节。

部署新版本应用

参考部署应用来部署应用。

2.3 游戏接入

为了方便用户快速开发云手游业务,我们推出了云手游SDK(Software Development Kit)。SDK是对云手游服务提供的API接口的封装,以简化用户的开发工作。直接调用 云手游SDK提供的接口函数即可实现接入云游戏的目的。

Android SDK提供aar包和jar包两种接入方式:

● aar包接入:在jar包接入的基础上,SDK中集成了云游戏运行所需的Activity,

Activity的生命周期在SDK中维护。

● jar包接入:SDK提供云游戏接入的基础能力,客户实现activity或fragment,启动 游戏时将承载云游戏渲染画面的viewgroup传入SDK。

请参考aar/jar功能接口示例完成游戏的初始化,启动,设置游戏画面配置,退出等生 命周期管理。

导入 SDK

将SDK编译好的aar包导入到“app/libs”目录下。

将SDK编译好的jar包导入到“app/libs”目录下,将so库文件导入到“app/jniLibs”目 录下。

使用 AAR SDK

在调用SDK接口的类文件中导入:

import com.huawei.cloudappsdk.manager.CloudAppManager;

在调用接口前设置ApplicationContext:

CloudAppManager.defaultManager().setApplicationContext(getApplicationContex t());

使用 JAR SDK

在调用SDK接口的类文件中导入:

import com.huawei.cloudgame.api.CloudGameManager;

import com.huawei.cloudgame.api.ICloudGame;

(26)

2.4 实例调度

完成游戏接入后,您可设计完成云手游实例调度系统开发,实例调度系统主要完成如 下几项功能:

● 收到新用户接入请求时,从当前空闲的云游戏实例池中分配一个给用户,并将实 例状态更新为已分配。

● 用户接入后,并且游戏已启动完成时,将实例状态更新为占用中。

● 用户云游戏使用结束后,退出云游戏实例,将实例状态更新为空闲态。

即您需要维护云手游实例的空闲、已分配、占用中等几个状态机,以完成用户的接入 或退出。

为支撑您完成上述云游戏实例的状态机维护,云手游媒体引擎将在游戏实例接入,游 戏启动,游戏退出时与您的应用之间进行鉴权及事件通知,以方便您知晓实例的使用 状态,完成实例的状态维护。

具体您需要使用如下几个接口:

说明

以下参数仅为示例,参数所填ID等内容请以实际为准。

进入游戏事件

● 请求样例

{"event_type": "app",

"event": {

"phone_id": "a7f3a1c5258347d6b6f1def79e11f2bc",

"status": 0,

"session_id": "856f5555806443e98b7ed04c5a9d6a9a",

"ticket": "5558064856f5555806443e98b7ed04c5a9d6a9ab7ed04c5a9d6a806443e98",

"time": "2019-11-14T19:38:49Z",

"app_id": "856f5555806443e98b7ed04c5a9d6a9a",

"error_msg": null }}

● 响应样例

{"request_id": "6837531fd3f54550927b930180a706bf"

}

退出游戏事件

● 请求样例

{"event_type": "app",

"event": {

"phone_id": "a7f3a1c5258347d6b6f1def79e11f2bc",

"status": 1,

"session_id": "856f5555806443e98b7ed04c5a9d6a9a",

"ticket": "5558064856f5555806443e98b7ed04c5a9d6a9ab7ed04c5a9d6a806443e98",

"time": "2019-11-14T19:38:49Z",

"run_time": 41000,

"app_id": "856f5555806443e98b7ed04c5a9d6a9a",

"error_msg": null

最佳实践 2 云手游接入最佳实践

(27)

}}

● 响应样例

{"request_id": "6837531fd3f54550927b930180a706bf"

}

心跳上报

● 请求样例

{"event_type": "heartbeat",

"event": {

"phone_id": "a7f3a1c5258347d6b6f1def79e11f2bc",

"app_id": "282fdfd613e04651a48225f1b2034de7",

"session_id": "36728337b89f22122af4a6e08bb1e7c0",

"time": "2019-11-14T19:38:49Z"

}}

● 响应样例

{"request_id": "6837531fd3f54550927b930180a706bf"

}

2.5 运营运维

云手游数据运营

在云手游运营过程中,为了满足您以数据驱动运营的诉求,云手游提供了相关接口帮 助您获取云手游实例相关运营数据,具体包括如下:

● 注册云游戏数据监听

通过注册云游戏数据监听器,获取云游戏发送到真机侧的数据。

● 获取网络时延

该接口用于获取网络时延RTT。

● 获取接收到的帧数

该接口用于获取单位时间内接收到的视频帧数。

● 获取接收到音视频数据大小

该接口用于获取接收到音视频数据的大小。

云手游实例运维

● 重启服务器/更新镜像

● 重启云手机实例/更新云手机镜像

● 重置云手机实例

● 更新云手机属性

● 查询任务执行状态

● 查看监控指标

(28)

3 批量安装应用至云手机

在一台云手机内安装APP后,可以通过调用接口的方式将此APP共享安装至多台云手 机,省去重复安装的时间。

说明

假设这台安装了APP的云手机为种子云手机。

约束与限制

● 该方案仅适用于非qemu规格的云手机,即实例规格名称中不包含“qemu”字 样。

3-1 实例规格

● 种子云手机必须为一台未进行过任何操作的云手机。如果云手机上存在历史操 作,请重置云手机。

操作步骤

1. 登录管理控制台,选择“存储 > 对象存储服务 OBS”,参考“批量控制”创建一 个用来存放文件的OBS桶,并为桶设置访问权限。

注意:为了成功上传文件到桶,在创建桶策略时请设置为“目录读写”模式,如 图3-2所示。

最佳实践 3 批量安装应用至云手机

(29)

3-2 创建桶策略

2. 使用ADB方式连接种子云手机,并为其安装需要的APP。

详细指导请参考“如何在单台云手机中安装APP?”。

3. 通过调用接口的方式,导出种子云手机数据并打包上传至步骤1中的OBS桶。

curl命令如下:

curl -i -k -X POST "https://${CPH Endpoint}/v1/${projectId}/cloud-phone/phones/batch-storage" -H

"Content-Type: application/json" -H "X-Auth-Token: $token" -d ' { "storage_infos": [

{

"phone_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "include_files": [

"/data/app/${package-name}-1", "/data/data/${package-name}",

"/data/media/0/Android/data/${package-name}"

],

"bucket_name": "${bucket_name}",

"object_path": "${your_dir}/${package-name}.tar"

} ] }'

其中,

– phone_id为种子云手机的ID。

– bucket_name为导出数据所存储的OBS桶名。

– object_path为导出数据所存储的OBS路径。

(30)

注意

如果想全量打包云手机APP数据,必须要包含以下3个路径:

● /data/app/${package-name}-1

其中${package-name}后面可能接的不是-1,需要根据云手机中的实际情况填 写。

● /data/data/${package-name}

● /data/media/0/Android/data/${package-name}

示例:

curl -i -k -X POST "https://${CPH Endpoint}/v1/${projectId}/cloud-phone/phones/batch-storage" -H

"Content-Type: application/json" -H "X-Auth-Token: $token" -d ' { "storage_infos": [

{

"phone_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "include_files": [

"/data/app/com.taptap-1", "/data/data/com.taptap",

"/data/media/0/Android/data/com.taptap"

],

"bucket_name": "your-bucket-name", "object_path": "your/dir/taptap.tar"

} ] }'

4. 进入步骤1中的OBS桶,在“对象”中查看并确认步骤3中打包上传的文件是否已 全部上传成功。确认成功后执行下一步。

5. 通过调用接口的方式,将OBS桶内的文件推送至服务器的共享存储目录。

curl命令示例如下:

curl -i -k -X POST "https://${CPH Endpoint}/v1/${projectId}/cloud-phone/phones/share-files" -H

"Content-Type: application/json" -H "X-Auth-Token: $token" -d ' { "bucket_name": "your-bucket-name",

"object_path": "your/dir/taptap.tar",

"server_ids": ["1678567b8bab40f93711234cb8","1234567b8bab40ffb711234cb"]

}'

其中,

– bucket_name、object_path分别对应步骤3中的内容。

– server_ids为接受文件推送的服务器ID列表。指定多个服务器ID,可以实现多 台服务器上的云手机均安装APP的诉求。

说明

该接口的更多说明,请参考“推送共享存储文件”。

6. 进入云手机控制台,单击已接受文件推送的服务器名称,在“实例管理”中,勾 选所有需要安装以上APP的云手机实例,单击“重置”。

注意

此步骤为重置,并非重启。

最佳实践 3 批量安装应用至云手机

(31)

执行结果

重置成功后,所有云手机均已安装APP。

(32)

4 修改云手机的 GPS 定位信息

云手机的GPS定位信息是模拟GPS卫星获取的经纬度值,数值单位为度,使用十进制小 数形式表示,遵循国际惯例,东经为正,西经为负,北纬为正,南纬为负。本文指导 您如何修改云手机的GPS定位信息。

前提条件

已购买并通过ADB方式登录云手机。详细操作请参见“购买云手机”。

操作步骤

1. 在本地设备的ADB安装目录中,执行如下命令,修改GPS定位信息。

假设需修改的位置是东经114.055939度,北纬22.657501度。

adb -s 127.0.0.1:本地空闲端口 shell "echo

'longitude=114.055939:latitude=22.657501' > /data/gps/fifo"

说明

其中,本地空闲端口是建立SSH隧道时所使用的本地空闲端口。

命令执行完立即生效,可使用地图类软件查看修改结果。例如:使用某社交软件 发布动态,添加位置时可以看到GPS定位信息。

最佳实践 4 修改云手机的 GPS 定位信息

(33)

5 使用云手机进行云手游系统建设

云手游服务器适合云手游的场景,一台云手游服务器对应15个云手机实例。本文通过 四个阶段构建入门级云手游系统。

一、梳理云手游集成对接方案

首先,您需要梳理对云手游的诉求,明确业务的应用场景、演进方向,以及自己的运 营和运维系统与云手机实例的交互方式,不同的业务诉求所对应的对接方案有差异。

我们已提供云手机实例的音视频接口,您可以通过音视频接口开发自己的控制程序、

网络传输、调度系统和客户端。

二、购买云手游服务器

在购买服务器时,请选择“云手游服务器”,即需要购买15个云手机实例。

5-1 选择云手机规格

三、获取云手游音视频 SDK

请联系您的客户经理获取云手游音视频的SDK文档。

(34)

四、开发云手游接入、触控和调度系统

获取SDK文档后,您可以通过音视频接口开发自己的控制程序、网络传输、调度系统 和客户端。后续云手机服务会推出更简单的接入方式,敬请期待。

最佳实践 5 使用云手机进行云手游系统建设

(35)

6 使用云手机摄像头

步骤 1:替换手机镜像

1. 查看云手机镜像最新动态,选择一个2020年10月9日(包含)之后的镜像,复制 镜像ID(需注意镜像的规格)。

2. 登录华为云控制台,切换到您的资源所在region,选择云手机服务。

3. 单击服务器管理,查看云手机服务器列表。

4. 进入云手机服务器详情页,选择其中一台云手机,单击“重启”按钮。

(36)

5. 勾选更新手机镜像复选框,然后填入前一步所选的镜像ID。

6. 单击确定,完成单台云手机更新镜像操作。

步骤 2:上传图片到手机

上传一张图片到云手机的“/data/local/tmp/”目录下。您有两种方式上传图片,此处 以“/path/to/local”目录下的“pic.jpeg”为例。

● 方式一:通过adb push命令推送图片

首先通过adb连接到云手机,然后执行以下命令:

adb push <

/path/to/local/pic.jpeg

> /data/local/tmp/

pic.jpeg

adb shell chmod 644 /data/local/tmp/

pic.jpeg

● 方式二:调用云手机api接口推送图片 请参考ADB命令推送文件来推送图片文件。

须知

上传的图片尺寸保证比例为 480(宽) * 640(高),比例不为480*640时,图片在摄像头 中可能会被缩放。图片只支持jpeg和png格式,请不要用其他格式的图片,并且路径一 定要是“/data/local/tmp/”目录下,图片权限至少为644(rw-r--r--)。

步骤 3:设置手机属性

您有两种方式设置手机属性。

方式一:adb连接到云手机,然后执行adb命令

adb shell setprop com.cph.cam_local_pic_path /data/local/tmp/

pic.jpeg

使用此这种方式,重启手机后属性失效。

方式二:调用云手机api接口设置属性

参考更新云手机属性来设置,将”com.cph.cam_local_pic_path”:”/data/local/tmp/

pic.jpeg”属性设置到手机中。属性将被持久化,重启手机属性依然保留。

最佳实践 6 使用云手机摄像头

(37)

步骤 4:测试摄像头

安装任意一款需要调用摄像头的APP,打开APP查看取景框是否成功显示您设置的图 片。

说明

当前云手机只支持后置摄像头。

(38)

7 通过 STF 批量管理云手机

操作场景

STF,全称Smartphone Test Farm,一个开源的web架构应用,用于移动设备管理控 制。本质上通过浏览器控制和管理Android设备,实现真正意义的云端使用、调试和测 试。本小节通过在一台ECS上部署STF的相关组件,实现快速批量管理云手机的功能。

约束与限制

● STF实测支持同时管理约160台云手机,更大规模的接入管理需要结合业务进行二 次开发。

● STF可靠运行依赖稳定的网络环境,网络状态不佳时云手机的操作时延会显著增 大。

前提条件

● 已购买一台绑定EIP的云手机服务器。

● 已购买一台绑定EIP的弹性云服务器。

说明

云手机服务器和弹性云服务器参考以下规格,具体规格可结合业务场景决定。

云手机服务器规格为:physical.kg1.4xlarge.cp | kg1.cp.c60.d16SSD.e1v1

弹性云服务器规格为:通用计算型 | s6.large.2 | 2vCPUs | 4GiB | Ubuntu 18.04 server 64bit(40GB)

操作步骤

在弹性云服务器上部署STF依赖的相关组件,并借助ADB工具连接云手机,最后通过浏 览器访问STF的地址,实现云手机的批量管理。

1. 安装ADB,并验证安装结果。

sudo apt install android-tools-adb android-tools-fastboot adb --version

7-1 ADB 安装成功回显版本号

最佳实践 7 通过 STF 批量管理云手机

(39)

2. 更新源,然后安装RethinkDB,用于STF数据存储。

source /etc/lsb-release && echo "deb https://download.rethinkdb.com/repository/ubuntu-

$DISTRIB_CODENAME $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list wget -qO- https://download.rethinkdb.com/repository/raw/pubkey.gpg | sudo apt-key add - sudo apt-get update

sudo apt-get install rethinkdb rethinkdb -v

正确回显版本即安装成功。

7-2 RethinkDB 安装成功

RethinkDB官网支持x86架构,对于arm架构仅为实验性支持。

3. 安装ZeroMQ,用于消息传递。

sudo apt-get install libzmq3-dev

7-3 ZeroMQ 安装成功

4. 安装Protocol Buffers,作为消息传递的数据格式,正确回显版本即安装成功。

sudo apt-get install libprotobuf-dev protobuf-compiler protoc --version

7-4 Protocol Buffers 安装成功

5. 安装GraphicsMagick,用于处理图像的读取、写入和操作。

sudo apt-get install graphicsmagick gm version

(40)

正确回显版本即安装成功。

7-5 GraphicsMagick 安装成功

6. 安装pkg-config,用于编译Nodejs第三方库。

sudo apt-get install pkg-config pkg-config --version

正确回显版本即安装成功。

7-6 pkg-config 安装成功

7. 安装yasm,用于编译STF的依赖库。

sudo apt-get install yasm yasm --version

正确回显版本即安装成功。

7-7 yasm 安装成功

8. 安装Nodejs,用于部署STF运行环境。

##STF运行只支持Node.js 8.x版本

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs

node -v npm -v

正确回显版本即安装成功。

7-8 node 和 npm 安装成功

9. 安装STF。

sudo npm install -g cnpm --registry=https://registry.npm.taobao.org sudo cnpm install -g stf

stf -V

正确回显版本即安装成功。

7-9 STF 安装成功

最佳实践 7 通过 STF 批量管理云手机

(41)

10. 检查STF依赖环境是否满足。

stf doctor

正确回显各组件版本即满足。

7-10 STF 检测启动环境

11. 基于ADB连接云手机实例,具体连接方式参考ADB连接。

12. 启动RethinkDB。

rethinkdb

回显如图7-11即启动成功。

7-11 启动 RethinkDB

13. 基于local模式启动STF,并基于浏览器访问。

##下方请填写实际的弹性云服务器EIP地址 stf local --public-ip {EIP地址} --allow-remote

##访问方式

http://{EIP地址}:7100/

7-12 输入 STF 默认账户和密码

(42)

7-13 云手机实例

7-14 云手机控制界面

最佳实践 7 通过 STF 批量管理云手机

(43)

A 读取 OBS 桶数据资源

前提条件

OBS桶中已经存在APK安装包、游戏tar包或其他资源。否则,需要手动上传游戏包资 源。可参考https://support.huaweicloud.com/qs-obs/obs_qs_0002.html进行上 传。

操作步骤

开放云手机对OBS桶内资源的只读权限,如下图所示:

A-1 配置只读权限

注意:上图中的“其他账号”是云手机内置账号,必须为如下信息,不能填写自己账 号的ID:

● 账号ID:529375c06c6340f299819082b3051225

● 用户ID:10208a4cf0944e339f523d9943ba02d3

(44)

按照上图的指示,权限配置完毕后,云手机就可以访问cloud-app-game桶中 game_tar文件下的数据资源了。

最佳实践 A 读取 OBS 桶数据资源

(45)

B 向 OBS 桶上传数据资源

操作步骤

开放云手机对OBS桶内资源的读写权限,如下图所示:

B-1 配置读写权限

注意:上图中的“其他账号”是云手机内置账号,必须为如下信息,不能填写自己账 号的ID:

● 账号ID:529375c06c6340f299819082b3051225

● 用户ID:10208a4cf0944e339f523d9943ba02d3

按照上图的指示,权限配置完毕后,云手机就可以将打包好的游戏tar包上传到cloud- app-game桶中的game_tar文件下了。

(46)

C 修订记录

版本日期 变更说明

2021-09-01 第四次正式发布。

新增通过STF批量管理云手机章节。

2020-11-06 第三次正式发布。

新增将某台云手机内的APP共享安装至多台云手机章 节。

2020-02-18 第二次正式发布。

新增

使用云手机进行云手游系统建设 修改

调整大纲结构,优化全文内容。

2019-08-30 第一次正式发布。

最佳实践 C 修订记录

參考文獻

相關文件

。又云。會也) 我唱泥牛吼 (云聞莫舉頭。又云。呵呵) 汝和木馬嘶 (云見應合眼。又云。撫掌) 但 看五六月 (云豈可徒然。又云吁) 氷片滿長街 (云事非草草。又云苦)

先輸入 netstat –na | more 確認 443 port 是否已在 listen 狀態。如果沒有的話,請以 sudo a2enmod ssl 啟用 apache2 的 ssl 模組,並以 sudo service apache2

(某) 等。欲得禮拜和尚。敢煩侍者通報。見住持。參頭云。請和尚。趺座乞容。 (某) 等 炷香禮拜。住持辭。再云。請和尚尊重。

• 請使用手機至play 商店或app store 下載Google

As a Key Learning Area, English Language Education seeks to develop students’ English language proficiency for study, work and leisure; provide them with opportunities for

不許。進云。却請和尚道。師云。既不許更道甚麼。進云。願施折檻朱雲手。來作為

德國為世界最大的風電市場,截至2006 年底,德國累計安裝風力發電設備18,385 台,发

剏結攝衣攝食二界總白席 (了云) 今請 (某) 人答所成法 (某) 謹白 問和索欲 (如前) 總答云結攝 衣界羯磨攝食界羯磨 先秉結衣界羯磨 次秉結攝食界羯磨。. 共解攝食攝衣二界總白席