• 沒有找到結果。

● 响应样例

{"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"

}

3 批量安装应用至云手机

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

说明

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

约束与限制

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

3-1 实例规格

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

操作步骤

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

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

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

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路径。

注意

如果想全量打包云手机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": [

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的诉求。

执行结果

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

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 定位信息

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

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

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

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

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

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

二、购买云手游服务器

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

5-1 选择云手机规格

三、获取云手游音视频 SDK

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

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

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

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

6 使用云手机摄像头

步骤 1:替换手机镜像

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

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

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

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

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 使用云手机摄像头

步骤 4:测试摄像头

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

说明

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

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 批量管理云手机

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

source /etc/lsb-release && echo "deb

https://download.rethinkdb.com/repository/ubuntu-$DISTRIB_CODENAME https://download.rethinkdb.com/repository/ubuntu-$DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list wget qO https://download.rethinkdb.com/repository/raw/pubkey.gpg | sudo aptkey 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

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

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 批量管理云手机

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 默认账户和密码

7-13 云手机实例

7-14 云手机控制界面

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

A 读取 OBS 桶数据资源

前提条件

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

操作步骤

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

A-1 配置只读权限

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

● 账号ID:529375c06c6340f299819082b3051225

● 用户ID:10208a4cf0944e339f523d9943ba02d3

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

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

B 向 OBS 桶上传数据资源

操作步骤

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

B-1 配置读写权限

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

● 账号ID:529375c06c6340f299819082b3051225

● 用户ID:10208a4cf0944e339f523d9943ba02d3

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

C 修订记录

版本日期 变更说明

版本日期 变更说明

相關文件