调用 PushFile 和 PullFile 接口之前,需要通过火山引擎控制台 访问控制 页面新建名为 PaasServiceRole 的用户角色,并授予相关访问策略。操作步骤如下:
登录火山引擎控制台,使用主账号登录火山引擎控制台,点击页面右上角账号头像,在下拉菜单中选择 访问控制,打开 访问控制 页面。
在左侧导航栏中打开 角色 页面,点击 新建角色,完成以下配置,并点击 下一步。
输入角色名 PaasServiceRole,点击 下一步。
搜索 TOSFullAccess 和 STSAssumeRoleAccess 权限策略,将其赋予新建的角色,点击 提交。
完成角色创建和授权。
云手机服务支持在创建实例时设置云手机属性、在更新实例属性时对实例属性进行修改。
说明
Android 系统中的可配置属性:
OverlayProperty 参数或“修改实例属性 UpdatePodProperty ”接口的 PodProperties 参数设置。OverlayPersistProperty 参数或“修改实例属性 UpdatePodProperty ”接口的 PodPersistProperties 参数设置。属性(key) | 属性值(value) | 属性说明 | 属性填写规范 |
|---|---|---|---|
debug.sensor.xxx.name | 例:TestName | 修改传感器名称。 | String 类型,示例: |
debug.sensor.xxx.vendor | 例:TestVendor | 修改传感器厂商。 | String 类型,示例: |
gsm.version.baseband | 例:1.0.0.0 | 基带版本 | |
keep_alive_whitelist | 例:com.example1,com.example2 | 开机自启动和保活的应用包名(只能通过持久化参数设置) | 多个应用包名用分号隔开;单个属性值的长度不可超过91个字符 |
persist.sys.locale | 例:en-US/zh-CN | 地区 | |
persist.sys.bd.grant_perm_install | 例:true/false | 是否允许应用安装后自动获取到所有权限 | |
persist.sys.bd.proc_state_broadcast | 例:true/false | 开关应用启动、结束进程的广播 | |
persist.sys.bd.unknowsource_verify | 例:true/false | 开关在 PackageInstaller 中处理未知应用来源时的弹框告警 | |
persist.sys.dsp.enable | 例:1/0 | 是否开启 DSP 功能 | |
persist.sys.allow_capture_secure | 例:true/false | 开关云手机画面截图的安全限制 | |
persist.sys.native_ime | 例:true/false | 是否调用本地输入法或云机实例输入法:
| |
persist.sys.scroll_friction | 例: 1.0 | 设置实例屏幕滚动摩擦力,可用于控制屏幕的滑动惯性效果。
说明 该属性仅 AOSP 13 支持设置。 | |
persist.sys.sendevent.enable | 例:true/false | 是否开启触控事件注入 | |
persist.sys.bd.capture_permission | 例:true/false | 抓屏(如截屏、录屏)时是否屏蔽敏感信息获取权限申请弹窗。 | |
ro.product.manufacturer | 例:HW | 厂商 | String,不可为空 |
ro.product.brand | 例:HW | 品牌 | String,不可为空 |
ro.product.model | 例:LYA_AL00 | 型号 | String,不可为空 |
ro.build.id | Build 标签 | ||
ro.build.display.id | Build 版本号 | ||
ro.product.name | 例:LYA_AL00 | 产品名称 | String,不可为空 |
ro.product.device | 例:HWLYA | 设备信息 | String,不可为空 |
ro.product.board | 例:LYA | 主板名 | String,不可为空 |
ro.bootloader | BootLoader 版本号 | ||
ro.build.type | 例:user/userdebug/eng | 正式版本/调试版本 | |
ro.build.fingerprint | 系统指纹 | ||
ro.build.date.utc | 固件编译时间戳 | ||
ro.build.user | 固件编译用户 | ||
ro.build.host | 固件编译主机 | ||
ro.build.description | 编译描述信息 | ||
ro.build.version.incremental | 内部版本号 | ||
ro.build.version.sdk | 例:28/29/30 | SDK 版本号 | |
ro.build.version.codename | codename | ||
ro.install.allow_downgrade | 例:true/false | 是否允许降级安装应用 | |
su_white_list | 例:com.example1;com.example2 | 需要开启SU权限的应用包名(只能通过持久化参数设置) | 多个应用包名用英文分号隔开,包名必须为小写,也可传入 “all” 对实例中的所有应用生效;单个属性值的长度不可超过91个字符 |
su_white_list;su_white_list.1;su_white_list.2;...su_white_list.31 | 需要开启SU权限的应用包名(只能通过持久化参数设置) | 如通过 su_white_list 设置时属性值长度超过91个字符,可使用该方法设置 |
云手机服务支持在创建实例时设置云手机属性、在更新实例属性时对实例属性进行修改。
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
fake_battery_charger_online | 1:充电 | 设置电池充电/放电状态 |
fake_battery_level | 取值范围:[10-100] | 设置电池电量 |
fake_battery_simulating_switch | on:开启 | 开启/关闭电池电量动态模拟 |
fake_battery_level_threshold_upper | 取值范围:[3-100] | 设置开启动态充放电模拟充电阈值 |
fake_battery_level_threshold_lower | 取值范围:[3-upper] | 设置开启动态充放电模拟放电阈值 |
fake_battery_charging_speed | 默认 60,单位:秒 | 设置充电速度(电量每增加1%所需的耗时) |
fake_battery_discharging_speed | 默认 600,单位:秒 | 设置放电速度(电量每降低1%所需的耗时) |
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
mic_configuration | 例:"44100 1 2" | 麦克风音频数据注入参数: |
camera_file_preview | on:开启 | 开启/关闭将 mp4 视频文件注入到云手机系统的虚拟摄像头中使用的功能 |
camera_file_preview_path | 例:/sdcard/playmp4/test1.mp4 | 需要将 mp4 视频文件注入到云手机系统的虚拟摄像头中使用时,设置待播放的 mp4 文件的路径(只需指定 |
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
settings.install_filter | 1:仅允许白名单应用安装 | 指定应用安装模式,与以下 install_whitelist 和 install_blacklist 属性配合使用 |
settings.adb_install_filter | 1:仅允许 adb 白名单应用安装 | 指定adb应用安装模式,与以下 install_whitelist 和 install_blacklist 属性配合使用 |
settings.install_whitelist | 例:com.example1;com.example2 | 允许安装的应用包名(应用安装白名单),多个应用包名用英文分号隔开 说明 属性值的长度不可超过 4096 个字符 |
settings.install_blacklist | 例:com.example1;com.example2 | 禁止安装的应用包名(应用安装黑名单),多个应用包名用英文分号隔开 说明 属性值的长度不可超过 4096 个字符 |
packages_enabled | 例:com.example1,com.example2 | 恢复显示被隐藏的应用包名,多个应用包名用英文逗号分隔开 |
packages_disabled | 例:com.example1,com.example2 | 隐藏已安装的应用包名,多个应用包名用英文逗号分隔开 |
hide_accessibility_for_apps |
| 用于隐藏指定应用的无障碍服务,隐藏后指定应用的无障碍服务权限无法被其他应用感知到 |
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
inject_sensor/switch |
| 是否开启自定义传感器设置,示例:settings put global inject_sensor/switch "on" |
inject_sensor/xxx "a,b,c" | 例:inject_sensor/acceleration "6.33,4.11,2.00" | 为对应传感器设置自定义值,当
注意 若同时设置了本参数和 |
inject_sensor/mode |
| 预设的传感器模拟模式,用于控制传感器模拟真人行为, 注意
|
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
gps_settings_support | on:打开 | 是否开启地理位置模拟。开启后,当有应用请求位置信息时,系统会每隔 1s 发送一次当前位置。 |
gps_inject_info | "longitude,latitude,altitude,speed,bearing,accuracy" | 位置信息,设置 |
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
device_name | 设置->关于手机->设备名称 | |
procCpuInfo | /proc/cpuinfo | |
procVersion | /proc/version | |
procAsoundCard | 例: | 模拟声卡信息,/proc/asound/cards |
procSysKernelRandomBootId | /proc/sys/kernel/random/boot_id | |
wifi_scanresults | "Test,ab:cd:01:ef:45:89,1245,0,[WPA2-EAP-CCMP][RSN-EAP-CCMP][ESS], -60, 2000,100000,22,33,20, 0,0,0" | WiFi 扫描结果: |
launcherImg | "http://xxx.abc.com/download/abc.png" | 从指定的 URL 下载图片,替换云手机 Launcher 的背景图 |
sim_switch | 1:开启 | 开启/关闭 SIM 卡 |
hide_sim_switch | 1:隐藏 | 显示/隐藏 SIM 卡开关 |
enableScriptAutoRun | 0:(默认值)关闭 | 是否开启配置脚本自启动功能 |
scripts_autorun_configs | 例(多个脚本的配置用英文分号隔开): | 脚本自启动的详细配置:
|
locale_language | 例: | 国家语言代码(如果传入不支持的语言,则不生效) |
time_zone | 例: | 时区代码(如果传入不支持的时区,则不生效) |
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
android_id | Android ID | |
location_mode |
| GPS 开关 |
bluetooth_name | 字符串类型 | 蓝牙名称 |
bluetooth_address | 例:AC:23:3F:6B:5D:63 | 蓝牙 MAC 地址 |
navigationbar_switch |
| 导航栏开关 |
statusbar_switch |
| 状态栏开关 |
hide_features_for_pkgs | 应用包名1,应用包名2,应用包名3 | 如需针对某些应用进行关键字隐藏,使用该字段可设置目标应用包名列表。多个包名以英文逗号“,”分隔,字段长度上限为 65536 个字符。请结合
|
hide_features_keywords | 示例:abc,def,gh | 如需针对某些应用进行关键字隐藏,使用该字段可设置需要隐藏的关键字。多组关键字以英文逗号“,”分隔。请结合
|
属性(key) | 属性值(value) | 属性说明 |
|---|---|---|
launcher3_remove_drawer | 1:打开,图标平铺到桌面 | launcher 样式更改。 |
block_host_dns | 例:www.baidu.com,www.163.com | 域名黑名单,即云手机实例禁止访问的域名名单。多个域名请使用英文逗号 “,” 隔开,支持使用 * 通配符。 |
block_ip | 例:0.0.0.0,1.1.1.1 | IP 黑名单,即云手机实例禁止访问的 IP 名单。多个 IP 请使用英文逗号 “,” 隔开,支持使用 * 通配符。 |
通过 setprop persist.sys.sendevent.enable true 开启触控事件注入说明如下:
ByteInputDevice。可通过 getevent -l 命令,查询名称为 ByteInputDevice 的设备。参考以下示例:130|7293733028013316891-0:/ # getevent -l add device 1: /dev/input/event4 name: "ByteInputDevice"
写入触控事件(getevent 可以看到结果),参考以下示例:
adb shell sendevent /dev/input/event4 1 330 1 adb shell sendevent /dev/input/event4 0 0 0 adb shell sendevent /dev/input/event4 1 330 0 adb shell sendevent /dev/input/event4 0 0 0
测试脚本(模拟触控事件)
#!/bin/bash # 模拟点击事件 sendevent /dev/input/event6 3 57 25 sendevent /dev/input/event6 1 330 1 sendevent /dev/input/event6 1 325 1 sendevent /dev/input/event6 3 53 353 # 点击坐标x,需要设置整数 sendevent /dev/input/event6 3 54 1234 # 点击坐标y,需要设置整数 sendevent /dev/input/event6 3 48 25 sendevent /dev/input/event6 3 48 7 sendevent /dev/input/event6 3 58 11 sendevent /dev/input/event6 0 0 0 sendevent /dev/input/event6 4 57 ffffffff sendevent /dev/input/event6 1 330 0 sendevent /dev/input/event6 1 325 0 sendevent /dev/input/event6 0 0 0
将上面的代码,保存为 sendevent.sh,push 到 Android 实例里面执行
# push 到 Android的/data/local/tmp目录下 adb push sendevent.sh /data/local/tmp/ # 修改为可执行权限 adb shell chmod a+x /data/local/tmp/sendevent.sh # 进入到Android的shell环境里面,执行脚本 adb shell # ./data/local/tmp/sendevent.sh
显示触摸屏操作:
settings put system show_touches 1 settings put system pointer_location 1