云服务器内容精选

  • 云手机使用自定义网络的安全组授权规则 使用自定义网络创建云手机服务器时,云手机服务将为您创建一个“cph_admin_trust”委托,该委托包含的权限为:“CPH AgencyDependencyAccess”。 云手机服务将使用该委托完成如下操作: 为云手机/云游戏实例创建弹性网卡,分配弹性公网IP、虚拟IP。 为云手机/云手游服务器创建默认名称为system-cph-sg的安全组,并设置安全组开放端口范围,具体默认规则参考图1、图2。 图1 入方向规则 22端口为公网通过SSH加密隧道ADB连接云手机依赖端口。 10000~19000端口范围将映射至每个云手机云游戏实例以支持实例开放的多个应用访问端口,每个云手机云游戏开放的应用端口可在云手机详情内查看。 “CPH deny rule for tenant vpc”规则用于限制同一VPC下的服务器之间的手机,使其不能通过1-9999的端口互访。 图2 出方向规则 同一VPC下的弹性云服务器默认无法通过1-9999端口访问云手机/云游戏实例,若想放开此限制,需要添加高优先级的安全组规则。例如某弹性云服务器IP地址为192.168.0.164,想要通过4555端口访问云手机,则需要添加以下入方向规则: 优先级:1 策略:允许 协议端口:4555 源地址:192.168.0.164 图3 添加高优先级安全组规则 父主题: 咨询类
  • 支持的事件监控 表1 CPH支持的事件监控 事件来源 事件名称 事件ID 事件级别 事件说明 处理建议 事件影响 CPH GPU故障 gpuAbnormal 致命 GPU发生故障 GPU故障,支持故障类型如下: "hard_hang" ----硬件故障,提交工单转运维处理 "over_temp" ----超温,提交工单转运维处理 "lost_card" ----显卡丢失,提交工单转运维处理 "light_reset_success" ----显卡轻量级reset成功,可能造成手机花屏,建议重启手机 "deep_reset_success" ----显卡重量级reset成功,可能造成该显卡下部分云手机花屏,建议重置显卡,或者提交工单转运维处理 "deep_reset_failed" ----显卡重量级reset失败,必须重启服务器才能恢复业务,或者提交工单转运维处理 "fan_damaged"----风扇损坏,必须重新更换显卡。提交工单转运维处理 业务中断 GPU恢复正常 gpuNormal 提示 GPU从故障中恢复正常 无需处理 无 内核崩溃 gpuNormal 致命 内核崩溃crash 提交工单转运维处理 crash期间业务中断 内核OOM kernelOom 重要 内核日志提示out of memory 提交工单转运维处理 业务中断 硬件故障 hardwareError 致命 内核日志报Hardware Error 提交工单转运维处理 业务中断 PCIe故障 pcieAer 致命 内核日志报PCIE Bus Error 提交工单转运维处理 业务中断 S CS I故障 scsiError 致命 内核日志报SCSI error 提交工单转运维处理 业务中断 镜像存储只读故障 partReadOnly 致命 镜像存储分区挂载属性变为readonly 提交工单转运维处理 业务中断 镜像存储超级块损坏故障 badSuperBlock 致命 镜像存储分区相关文件系统超级块损坏 提交工单转运维处理 业务中断 镜像存储sharedpath只读故障 isuladMasterReadOnly 致命 镜像存储的/.sharedpath/master挂载属性只读 提交工单转运维处理 业务中断 云手机数据盘只读故障 cphDiskReadOnly 致命 云手机数据盘挂载属性变为readonly 提交工单转运维处理 业务中断 云手机数据盘超级块损坏故障 cphDiskReadOnly 致命 云手机数据盘相关文件系统超级块损坏 提交工单转运维处理 业务中断 父主题: 使用 CES 监控CPH
  • 使用限制 单账号跟踪的事件可以通过 云审计 控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的 CTS /system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到 对象存储服务 (OBS)或 云日志 服务(LTS),才可在OBS桶或LTS日志组里面查看历史事件信息。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 支持审计的关键操作列表 表1 云审计支持的云手机操作列表 操作名称 资源类型 事件名称 创建云手机 phone createCloudPhone 更新云手机名称 phone updatePhoneName 重置云手机 phone resetCloudPhone 重启云手机 phone restartCloudPhone 添加SD卡文件 phone addSdFiles 删除SD卡文件 phone deleteSdFiles 设置事件通知 phone setEventNotification
  • 后续操作 您可以在“服务器管理”页面查看服务器的状态、IP地址等信息,在“实例管理”页面查看云手机状态、名称等信息。云手机数量取决于购买服务器时所选择的云手机规格,假设规格中“手机开数”为60,则可创建的云手机数量为60台。 所有云手机共用一个服务器的公网IP,每台云手机都拥有独立的私有IP。 云手机购买成功后,您可能需要连接云手机,目前支持ADB连接方式。ADB方式是通用的连接方式,所有规格的云手机均支持。 连接云手机后,您可能希望完成一些高阶功能,请参考如下链接: 通过Airtest快速获取云手机画面 修改云手机的GPS定位信息 如果共享带宽大小不能满足当前的业务需求,您可以升级共享带宽(仅支持API方式)。
  • 步骤2:通过ADB连接云手机 登录弹性云服务器。 本地下载ADB工具并上传至云服务器。 访问https://developer.android.com/studio/releases/platform-tools,在页面右上角切换语言为“English”,选择“Download SDK Platform-Tools for Windows”。 图6 下载ADB工具 在弹出的对话框中勾选“I have read and agree with the above terms and conditions”,并单击“DOWNLOAD ANDROID SDK PLATFORM-TOOLS FOR WINDOWS”进行下载。 解压ADB工具安装包(假设为platform-tools_r29.0.5-windows.zip)至云服务器指定目录下(PATH)。 进入“PATH\platform-tools”目录。 执行如下ADB命令连接云手机。 adb connect 服务器监听IP:服务器监听端口 服务器监听IP和服务器监听端口的获取方式如下: 在实例管理页面,单击待连接的云手机名称,进入详情页。 在“应用端口”区域获取服务器监听地址。 图7 应用端口 以图7中的信息为例,ADB命令为: adb connect 172.31.248.213:4673 若您购买云手机服务器时选择开启IPv6,云手机详情页会如图8所示,同时存在IPv4与IPv6的实例地址和服务器监听地址,监听端口相同。 通过IPv6地址连接的ADB命令为: adb connect [2409:8c85:80:32:cb7e:97e3:e424:1286]:4615 (注意添加中括号) 图8 应用端口 执行adb devices命令,检测当前端口是否已连接。 回显如下类似信息,表示连接成功。 List of devices attached 172.31.248.213:4673 device 执行相关ADB命令,开始操作云手机。 ADB连接的故障排查,请参考如下链接: ADB连接云手机时报错“unable to connect to :5555”? ADB连接突然中断,如何解决?
  • 前提条件 适用于使用系统定义网络和自定义网络的云手机服务器。 云手机实例状态必须为“运行中”。 请确保租户VPC已放通将要访问的云手机IP地址和端口的安全组入方向规则。 云手机IP地址和端口获取方式:进入云手机实例详情页,在“应用端口”中获取“服务器监听地址”,如图3所示。 图3 应用端口 租户VPC下已创建一台Windows系统的弹性云服务器。 若要通过IPv6地址连接双栈云手机,需保证您的弹性云服务器等发起访问的环境支持IPv6(使用系统定义网络的云手机服务器不支持IPv6)。
  • 步骤2:通过ADB连接云手机 下载ADB工具。 访问https://developer.android.com/studio/releases/platform-tools,在页面右上角切换语言为“English”,选择“Download SDK Platform-Tools for Windows”。 在弹出的对话框中勾选“I have read and agree with the above terms and conditions”,并单击“DOWNLOAD ANDROID SDK PLATFORM-TOOLS FOR WINDOWS”进行下载。 如果您无法访问上述网站,也可以单击如下链接下载: https://dl.google.com/android/repository/platform-tools-latest-windows.zip 下载后得到“platform-tools_r29.0.5-windows.zip”文件,解压该zip文件至您选定的目录,例如“C:\Users\Administrator\Downloads”。 “platform-tools_r29.0.5-windows.zip”文件中的版本号“29.0.5”仅为示例,请以实际下载的版本为准。 打开命令提示符窗口,进入“C:\Users\Administrator\Downloads\platform-tools”目录。 在步骤1:建立SSH隧道中,如果执行建立SSH隧道的命令后提示“Authorized users only. All activities may be monitored and reported.”,请保持该窗口不关闭,并重新打开一个命令提示符窗口进行本步骤操作。 cd C:\Users\Administrator\Downloads\platform-tools 执行如下ADB命令,创建与云手机的ADB连接。 adb connect 127.0.0.1:本地空闲端口 其中,本地空闲端口为2中所使用的空闲端口。 示例:adb connect 127.0.0.1:1234 检测当前端口是否已连接,可输入adb devices命令检查。 ADB连接的故障排查,请参考如下链接: ADB连接云手机时报错“unable to connect to :5555”? ADB连接突然中断,如何解决?
  • 步骤1:建立SSH隧道 在本地设备打开命令提示符窗口,以Windows 10操作系统为例,方法如下: 同时按下“Win + R”,在打开的“运行”对话框中输入cmd,按“Enter”。 执行以下命令,建立SSH隧道。 ssh -L 本地空闲端口:云手机监听地址 SSH隧道用户名@公网IP地址 -i 私钥文件路径 -o ServerAliveInterval=30 -Nf 各参数说明及获取方式如下所述: 本地空闲端口:用户自由选择的本地设备中任意未被占用的端口,通过该端口映射云手机应用端口。获取方式见2。 云手机监听地址:云手机的内网IP与端口。获取方式见3。 SSH隧道用户名:云手机所在区域的项目ID。获取方式见1。 公网IP地址:服务器的公网IP。获取方式见4。 私钥文件路径:服务器的密钥对所对应的私钥文件在本地的保存路径。获取方式见5。 假设本地空闲端口为1234,云手机监听地址为10.237.0.61:5555,SSH隧道用户名为05e1aexxx,公网IP地址为xxx.xxx.xxx.xxx,私钥文件路径为C:\Users\Administrator\Downloads\KeyPair-a49c.pem,命令如下: ssh -L 1234:10.237.0.54:5555 05e1aexxx@xxx.xxx.xxx.xxx -i C:\Users\Administrator\Downloads\KeyPair-a49c.pem -o ServerAliveInterval=30 -Nf 该命令表示从本地PC建立一个到云手机的SSH隧道,使用本地端口转发模式,监听本地PC的1234端口;访问本地PC的1234端口时,通信数据将会被转发到云手机的5555端口。 执行命令后,SSH程序会在后台执行隧道的转发,执行后无报错或者报“Authorized users only. All activities may be monitored and reported.”即为SSH隧道建立成功。 若您购买云手机服务器时选择开启IPv6,可以使用IPv6建立隧道连接云手机。命令结构和IPv4一致,例如: ssh -L 1234:[fd00::aed:96]:5555 05e1aexxx@ xxx:xxx:xxx:xxx -i C:\Users\Administrator\Downloads\KeyPair-a49c.pem -o ServerAliveInterval=30 -Nf 目前建立隧道连接云手机,会话连接无超时退出机制,用户使用结束后需要及时终止连接。 以Windows系统为例,在关闭对应的终端窗口后,需要在任务管理器的后台进程中,找到ssh.exe进程,选中并结束任务。 以Linux系统为例,通过ps –ef|grep ssh命令找到对应的后台进程,再通过kill -9 {进程号}结束对应的进程。 建立SSH隧道的故障排查,请参考如下链接: 通过公网访问云手机时,建立SSH隧道失败了,如何解决? 建立SSH隧道时报错“too open”? 建立SSH隧道时报错“Permission denied”? 建立SSH隧道时报错“no match mac found”? 如何保持SSH会话不中断?
  • 调用API更换弹性公网IP 解绑弹性公网IP。 请在管理控制台或者调用查询云手机服务器详情接口,查询服务器的EIP的ip地址(例如 122.9.102.xxx)。 在弹性公网IP的管理控制台或者调用全量查询弹性公网IP列表接口,通过ip地址查询EIP的id。 调用解绑弹性公网IP的解绑弹性公网IP接口进行解绑。 调用示例如下: curl -i -k -X POST https://{Endpoint}/v3/{project_id}/eip/publicips/{eip_id}/disassociate-instance -H "Content-Type: application/json" -H "X-Auth-Token: ${token}" 绑定弹性公网IP。 严格来讲弹性公网IP实际是绑定到port的,存在空闲port的机器可以进行绑定操作。 根据第1步的指导查询到要绑定的弹性公网IP的id,这个弹性公网IP需要是未绑定状态。 根据CPH的server_id调用查询端口列表接口,查询出服务器的所有port。 调用示例如下: curl -i -k -X GET https://{Endpoint}/v1/{project_id}/ports?instance_id={cph_server_id} -H "Content-Type: application/json" -H "X-Auth-Token: ${token}" 根据port_id调用查询EIP列表接口查询弹性公网IP,可以一次传入一个或多个port_id进行查询,如果哪个port查不到弹性公网IP,则说明它可以绑定弹性公网IP。 调用示例如下: curl -i -k -X GET https://{Endpoint}/v1/{project_id}/publicips?port_id={port_id1}\&port_id={port_id2}\&port_id={port_id3} -H "Content-Type: application/json" -H "X-Auth-Token: ${token}" 对于没有绑定弹性公网IP的port,可以调用绑定弹性公网IP接口,绑定弹性公网IP。 调用示例如下: curl -i -k -X POST https://{Endpoint}/v3/{project_id}/eip/publicips/{eip_id}/associate-instance -H "Content-Type: application/json" -H "X-Auth-Token: ${token}" -d '{"publicip":{"associate_instance_id":"{port_id}","associate_instance_type":"PORT"}}'
  • 语言标签列表 表1 语言标签列表 语言标签 语言 (国家/地区) af-NA Afrikaans (Namibia) af-ZA Afrikaans (South Africa) agq-CM Aghem (Cameroon) ak-GH Akan (Ghana) am-ET Amharic (Ethiopia) ar-AE Arabic (United Arab Emirates) ar-AE-u-nu-latn Arabic (United Arab Emirates,Western Digits) ar-BH Arabic (Bahrain) ar-BH-u-nu-latn Arabic (Bahrain,Western Digits) ar-DJ Arabic (Djibouti) ar-DJ-u-nu-latn Arabic (Djibouti,Western Digits) ar-DZ Arabic (Algeria) ar-DZ-u-nu-arab Arabic (Algeria,Arabic-Indic Digits) ar-EG Arabic (Egypt) ar-EG-u-nu-latn Arabic (Egypt,Western Digits) ar-EH Arabic (Western Sahara) ar-EH-u-nu-arab Arabic (Western Sahara,Arabic-Indic Digits) ar-ER Arabic (Eritrea) ar-ER-u-nu-latn Arabic (Eritrea,Western Digits) ar-IL Arabic (Israel) ar-IL-u-nu-latn Arabic (Israel,Western Digits) ar-IQ Arabic (Iraq) ar-IQ-u-nu-latn Arabic (Iraq,Western Digits) ar-JO Arabic (Jordan) ar-JO-u-nu-latn Arabic (Jordan,Western Digits) ar-KM Arabic (Comoros) ar-KM-u-nu-latn Arabic (Comoros,Western Digits) ar-KW Arabic (Kuwait) ar-KW-u-nu-latn Arabic (Kuwait,Western Digits) ar-LB Arabic (Lebanon) ar-LB-u-nu-latn Arabic (Lebanon,Western Digits) ar-LY Arabic (Libya) ar-LY-u-nu-arab Arabic (Libya,Arabic-Indic Digits) ar-MA Arabic (Morocco) ar-MA-u-nu-arab Arabic (Morocco,Arabic-Indic Digits) ar-MR Arabic (Mauritania) ar-MR-u-nu-latn Arabic (Mauritania,Western Digits) ar-OM Arabic (Oman) ar-OM-u-nu-latn Arabic (Oman,Western Digits) ar-PS Arabic (Palestine) ar-PS-u-nu-latn Arabic (Palestine,Western Digits) ar-QA Arabic (Qatar) ar-QA-u-nu-latn Arabic (Qatar,Western Digits) ar-SA Arabic (Saudi Arabia) ar-SA-u-nu-latn Arabic (Saudi Arabia,Western Digits) ar-SD Arabic (Sudan) ar-SD-u-nu-latn Arabic (Sudan,Western Digits) ar-SO Arabic (Somalia) ar-SO-u-nu-latn Arabic (Somalia,Western Digits) ar-SS Arabic (South Sudan) ar-SS-u-nu-latn Arabic (South Sudan,Western Digits) ar-SY Arabic (Syria) ar-SY-u-nu-latn Arabic (Syria,Western Digits) ar-TD Arabic (Chad) ar-TD-u-nu-latn Arabic (Chad,Western Digits) ar-TN Arabic (Tunisia) ar-TN-u-nu-arab Arabic (Tunisia,Arabic-Indic Digits) ar-XB Right-to-left pseudolocale ar-YE Arabic (Yemen) ar-YE-u-nu-latn Arabic (Yemen,Western Digits) as-IN Assamese (India) asa-TZ Asu (Tanzania) az-Cyrl-AZ Azerbaijani (Cyrillic,Azerbaijan) az-Latn-AZ Azerbaijani (Latin,Azerbaijan) bas-CM Basaa (Cameroon) be-BY Belarusian (Belarus) bem-ZM Bemba (Zambia) bez-TZ Bena (Tanzania) bg-BG Bulgarian (Bulgaria) bm-ML Bambara (Mali) bn-BD Bengali (Bangladesh) bn-BD-u-nu-latn Bengali (Bangladesh,Western Digits) bn-IN Bengali (India) bn-IN-u-nu-latn Bengali (India,Western Digits) bo-CN Tibetan (China) bo-IN Tibetan (India) br-FR Breton (France) brx-IN Bodo (India) bs-Cyrl-BA Bosnian (Cyrillic,Bosnia & Herzegovina) bs-Latn-BA Bosnian (Latin,Bosnia & Herzegovina) ca-AD Catalan (Andorra) ca-ES Catalan (Spain) ca-FR Catalan (France) ca-IT Catalan (Italy) ce-RU Chechen (Russia) cgg-UG Chiga (Uganda) chr-US Cherokee (United States) cs-CZ Czech (Czechia) cy-GB Welsh (United Kingdom) da-DK Danish (Denmark) da-GL Danish (Greenland) dav-KE Taita (Kenya) de-AT German (Austria) de-BE German (Belgium) de-CH German (Switzerland) de-DE German (Germany) de-LI German (Liechtenstein) de-LU German (Luxembourg) dje-NE Zarma (Niger) dsb-DE Lower Sorbian (Germany) dua-CM Duala (Cameroon) dyo-SN Jola-Fonyi (Senegal) dz-BT Dzongkha (Bhutan) ebu-KE Embu (Kenya) ee-GH Ewe (Ghana) ee-TG Ewe (Togo) el-CY Greek (Cyprus) el-GR Greek (Greece) en-AG English (Antigua & Barbuda) en-AI English (Anguilla) en-AS English (American Samoa) en-AT English (Austria) en-AU English (Australia) en-BB English (Barbados) en-BE English (Belgium) en-BI English (Burundi) en-BM English (Bermuda) en-BS English (Bahamas) en-BW English (Botswana) en-BZ English (Belize) en-CA English (Canada) en-CC English (Cocos (Keeling) Islands) en-CH English (Switzerland) en-CK English (Cook Islands) en-CM English (Cameroon) en-CX English (Christmas Island) en-CY English (Cyprus) en-DE English (Germany) en-DG English (Diego Garcia) en-DK English (Denmark) en-DM English (Dominica) en-ER English (Eritrea) en-FI English (Finland) en-FJ English (Fiji) en-FK English (Falkland Islands (Islas Malvinas)) en-FM English (Micronesia) en-GB English (United Kingdom) en-GD English (Grenada) en-GG English (Guernsey) en-GH English (Ghana) en-GI English (Gibraltar) en-GM English (Gambia) en-GU English (Guam) en-GY English (Guyana) en-HK English (Hong Kong) en-IE English (Ireland) en-IL English (Israel) en-IM English (Isle of Man) en-IN English (India) en-IO English (British Indian Ocean Territory) en-JE English (Jersey) en-JM English (Jamaica) en-KE English (Kenya) en-KI English (Kiribati) en-KN English (St. Kitts & Nevis) en-KY English (Cayman Islands) en-LC English (St. Lucia) en-LR English (Liberia) en-LS English (Lesotho) en-MG English (Madagascar) en-MH English (Marshall Islands) en-MO English (Macao) en-MP English (Northern Mariana Islands) en-MS English (Montserrat) en-MT English (Malta) en-MU English (Mauritius) en-MW English (Malawi) en-MY English (Malaysia) en-NA English (Namibia) en-NF English (Norfolk Island) en-NG English (Nigeria) en-NL English (Netherlands) en-NR English (Nauru) en-NU English (Niue) en-NZ English (New Zealand) en-PG English (Papua New Guinea) en-PH English (Philippines) en-PK English (Pakistan) en-PN English (Pitcairn Islands) en-PR English (Puerto Rico) en-PW English (Palau) en-RW English (Rwanda) en-SB English (Solomon Islands) en-SC English (Seychelles) en-SD English (Sudan) en-SE English (Sweden) en-SG English (Singapore) en-SH English (St. Helena) en-SI English (Slovenia) en-SL English (Sierra Leone) en-SS English (South Sudan) en-SX English (Sint Maarten) en-SZ English (Eswatini) en-TC English (Turks & Caicos Islands) en-TK English (Tokelau) en-TO English (Tonga) en-TT English (Trinidad & Tobago) en-TV English (Tuvalu) en-TZ English (Tanzania) en-UG English (Uganda) en-UM English (U.S. Outlying Islands) en-US English (United States) en-VC English (St. Vincent & Grenadines) en-VG English (British Virgin Islands) en-VI English (U.S. Virgin Islands) en-VU English (Vanuatu) en-WS English (Samoa) en-XA Left-to-right pseudolocale en-ZA English (South Africa) en-ZM English (Zambia) en-ZW English (Zimbabwe) es-AR Spanish (Argentina) es-BO Spanish (Bolivia) es-CL Spanish (Chile) es-CO Spanish (Colombia) es-CR Spanish (Costa Rica) es-CU Spanish (Cuba) es-DO Spanish (Dominican Republic) es-EA Spanish (Ceuta & Melilla) es-EC Spanish (Ecuador) es-ES Spanish (Spain) es-GQ Spanish (Equatorial Guinea) es-GT Spanish (Guatemala) es-HN Spanish (Honduras) es-IC Spanish (Canary Islands) es-MX Spanish (Mexico) es-NI Spanish (Nicaragua) es-PA Spanish (Panama) es-PE Spanish (Peru) es-PH Spanish (Philippines) es-PR Spanish (Puerto Rico) es-PY Spanish (Paraguay) es-SV Spanish (El Salvador) es-US Spanish (United States) es-UY Spanish (Uruguay) es-VE Spanish (Venezuela) et-EE Estonian (Estonia) eu-ES Basque (Spain) ewo-CM Ewondo (Cameroon) fa-AF Persian (Afghanistan) fa-AF-u-nu-latn Persian (Afghanistan,Western Digits) fa-IR Persian (Iran) fa-IR-u-nu-latn Persian (Iran,Western Digits) ff-CM Fulah (Cameroon) ff-GN Fulah (Guinea) ff-MR Fulah (Mauritania) ff-SN Fulah (Senegal) fi-FI Finnish (Finland) fil-PH Filipino (Philippines) fo-DK Faroese (Denmark) fo-FO Faroese (Faroe Islands) fr-BE French (Belgium) fr-BF French (Burkina Faso) fr-BI French (Burundi) fr-BJ French (Benin) fr-BL French (St. Barthélemy) fr-CA French (Canada) fr-CD French (Congo (DRC)) fr-CF French (Central African Republic) fr-CG French (Congo (Republic)) fr-CH French (Switzerland) fr-CI French (Côte d’Ivoire) fr-CM French (Cameroon) fr-DJ French (Djibouti) fr-DZ French (Algeria) fr-FR French (France) fr-GA French (Gabon) fr-GF French (French Guiana) fr-GN French (Guinea) fr-GP French (Guadeloupe) fr-GQ French (Equatorial Guinea) fr-HT French (Haiti) fr-KM French (Comoros) fr-LU French (Luxembourg) fr-MA French (Morocco) fr-MC French (Monaco) fr-MF French (St. Martin) fr-MG French (Madagascar) fr-ML French (Mali) fr-MQ French (Martinique) fr-MR French (Mauritania) fr-MU French (Mauritius) fr-NC French (New Caledonia) fr-NE French (Niger) fr-PF French (French Polynesia) fr-PM French (St. Pierre & Miquelon) fr-RE French (Réunion) fr-RW French (Rwanda) fr-SC French (Seychelles) fr-SN French (Senegal) fr-SY French (Syria) fr-TD French (Chad) fr-TG French (Togo) fr-TN French (Tunisia) fr-VU French (Vanuatu) fr-WF French (Wallis & Futuna) fr-YT French (Mayotte) fur-IT Friulian (Italy) fy-NL Western Frisian (Netherlands) ga-IE Irish (Ireland) gd-GB Scottish Gaelic (United Kingdom) gl-ES Galician (Spain) gsw-CH Swiss German (Switzerland) gsw-FR Swiss German (France) gsw-LI Swiss German (Liechtenstein) gu-IN Gujarati (India) guz-KE Gusii (Kenya) gv-IM Manx (Isle of Man) ha-GH Hausa (Ghana) ha-NE Hausa (Niger) ha-NG Hausa (Nigeria) haw-US Hawaiian (United States) iw-IL Hebrew (Israel) hi-IN Hindi (India) hr-BA Croatian (Bosnia & Herzegovina) hr-HR Croatian (Croatia) hsb-DE Upper Sorbian (Germany) hu-HU Hungarian (Hungary) hy-AM Armenian (Armenia) in-ID Indonesian (Indonesia) ig-NG Igbo (Nigeria) ii-CN Sichuan Yi (China) is-IS Icelandic (Iceland) it-CH Italian (Switzerland) it-IT Italian (Italy) it-SM Italian (San Marino) ja-JP Japanese (Japan) jgo-CM Ngomba (Cameroon) jmc-TZ Machame (Tanzania) ka-GE Georgian (Georgia) kab-DZ Kabyle (Algeria) kam-KE Kamba (Kenya) kde-TZ Makonde (Tanzania) kea-CV Kabuverdianu (Cape Verde) khq-ML Koyra Chiini (Mali) ki-KE Kikuyu (Kenya) kk-KZ Kazakh (Kazakhstan) kkj-CM Kako (Cameroon) kl-GL Kalaallisut (Greenland) kln-KE Kalenjin (Kenya) km-KH Khmer (Cambodia) kn-IN Kannada (India) ko-KP Korean (North Korea) ko-KR Korean (South Korea) kok-IN Konkani (India) ksb-TZ Shambala (Tanzania) ksf-CM Bafia (Cameroon) ksh-DE Colognian (Germany) kw-GB Cornish (United Kingdom) ky-KG Kyrgyz (Kyrgyzstan) lag-TZ Langi (Tanzania) lb-LU Luxembourgish (Luxembourg) lg-UG Ganda (Uganda) lkt-US Lakota (United States) ln-AO Lingala (Angola) ln-CD Lingala (Congo (DRC)) ln-CF Lingala (Central African Republic) ln-CG Lingala (Congo (Republic)) lo-LA Lao (Laos) lt-LT Lithuanian (Lithuania) lu-CD Luba-Katanga (Congo (DRC)) luo-KE Luo (Kenya) luy-KE Luyia (Kenya) lv-LV Latvian (Latvia) mas-KE Masai (Kenya) mas-TZ Masai (Tanzania) mer-KE Meru (Kenya) mfe-MU Morisyen (Mauritius) mg-MG Malagasy (Madagascar) mgh-MZ Makhuwa-Meetto (Mozambique) mgo-CM Meta (Cameroon) mk-MK Macedonian (North Macedonia (FYROM)) ml-IN Malayalam (India) mn-MN Mongolian (Mongolia) mr-IN Marathi (India) ms-BN Malay (Brunei) ms-MY Malay (Malaysia) ms-SG Malay (Singapore) mt-MT Maltese (Malta) my-MM Burmese (Myanmar (Burma)) my-MM-u-nu-latn Burmese (Myanmar (Burma), Western Digits) mzn-IR Mazanderani (Iran) naq-NA Nama (Namibia) nb-NO Norwegian Bokmål (Norway) nb-SJ Norwegian Bokmål (Svalbard & Jan Mayen) nd-ZW North Ndebele (Zimbabwe) ne-IN Nepali (India) ne-NP Nepali (Nepal) nl-AW Dutch (Aruba) nl-BE Dutch (Belgium) nl-BQ Dutch (Caribbean Netherlands) nl-CW Dutch (Curaçao) nl-NL Dutch (Netherlands) nl-SR Dutch (Suriname) nl-SX Dutch (Sint Maarten) nn-NO Norwegian Nynorsk (Norway) nnh-CM Ngiemboon (Cameroon) nus-SS Nuer (South Sudan) nyn-UG Nyankole (Uganda) om-ET Oromo (Ethiopia) om-KE Oromo (Kenya) or-IN Oriya (India) os-GE Ossetic (Georgia) os-RU Ossetic (Russia) pa-Arab-PK Punjabi (Arabic,Pakistan) pa-Guru-IN Punjabi (Gurmukhi,India) pl-PL Polish (Poland) ps-AF Pashto (Afghanistan) pt-AO Portuguese (Angola) pt-BR Portuguese (Brazil) pt-CV Portuguese (Cape Verde) pt-GW Portuguese (Guinea-Bissau) pt-MO Portuguese (Macau) pt-MZ Portuguese (Mozambique) pt-PT Portuguese (Portugal) pt-ST Portuguese (São Tomé & Príncipe) pt-TL Portuguese (Timor-Leste) qu-BO Quechua (Bolivia) qu-EC Quechua (Ecuador) qu-PE Quechua (Peru) rm-CH Romansh (Switzerland) rn-BI Rundi (Burundi) ro-MD Romanian (Moldova) ro-RO Romanian (Romania) rof-TZ Rombo (Tanzania) ru-BY Russian (Belarus) ru-KG Russian (Kyrgyzstan) ru-KZ Russian (Kazakhstan) ru-MD Russian (Moldova) ru-RU Russian (Russia) ru-UA Russian (Ukraine) rw-RW Kinyarwanda (Rwanda) rwk-TZ Rwa (Tanzania) sah-RU Sakha (Russia) saq-KE Samburu (Kenya) sbp-TZ Sangu (Tanzania) se-FI Northern Sami (Finland) se-NO Northern Sami (Norway) se-SE Northern Sami (Sweden) seh-MZ Sena (Mozambique) ses-ML Koyraboro Senni (Mali) sg-CF Sango (Central African Republic) si-LK Sinhala (Sri Lanka) sk-SK Slovak (Slovakia) sl-SI Slovenian (Slovenia) smn-FI Inari Sami (Finland) sn-ZW Shona (Zimbabwe) so-DJ Somali (Djibouti) so-ET Somali (Ethiopia) so-KE Somali (Kenya) so-SO Somali (Somalia) sq-AL Albanian (Albania) sq-MK Albanian (North Macedonia (FYROM)) sq-XK Albanian (Kosovo) sr-Cyrl-BA Serbian (Cyrillic,Bosnia & Herzegovina) sr-Cyrl-ME Serbian (Cyrillic,Montenegro) sr-Cyrl-RS Serbian (Cyrillic,Serbia) sr-Cyrl-XK Serbian (Cyrillic,Kosovo) sr-Latn-BA Serbian (Latin,Bosnia & Herzegovina) sr-Latn-ME Serbian (Latin,Montenegro) sr-Latn-RS Serbian (Latin,Serbia) sr-Latn-XK Serbian (Latin,Kosovo) sv-AX Swedish (Åland Islands) sv-FI Swedish (Finland) sv-SE Swedish (Sweden) sw-CD Swahili (Congo (DRC)) sw-KE Swahili (Kenya) sw-TZ Swahili (Tanzania) sw-UG Swahili (Uganda) ta-IN Tamil (India) ta-LK Tamil (Sri Lanka) ta-MY Tamil (Malaysia) ta-SG Tamil (Singapore) te-IN Telugu (India) teo-KE Teso (Kenya) teo-UG Teso (Uganda) th-TH Thai (Thailand) to-TO Tongan (Tonga) tr-CY Turkish (Cyprus) tr-TR Turkish (Türkiye) twq-NE Tasawaq (Niger) tzm-MA Central Atlas Tamazight (Morocco) ug-CN Uyghur (China) uk-UA Ukrainian (Ukraine) ur-IN Urdu (India) ur-IN-u-nu-latn Urdu (India,Western Digits) ur-PK Urdu (Pakistan) ur-PK-u-nu-arabext Urdu (Pakistan,Extended Arabic-Indic Digits) uz-Arab-AF Uzbek (Arabic,Afghanistan) uz-Cyrl-UZ Uzbek (Cyrillic,Uzbekistan) uz-Latn-UZ Uzbek (Latin,Uzbekistan) vi-VN Vietnamese (Vietnam) vun-TZ Vunjo (Tanzania) wae-CH Walser (Switzerland) xog-UG Soga (Uganda) yav-CM Yangben (Cameroon) yo-BJ Yoruba (Benin) yo-NG Yoruba (Nigeria) yue-HK Cantonese (Hong Kong) zgh-MA Standard Moroccan Tamazight (Morocco) zh-Hans-CN Chinese (Simplified Han,China) zh-Hans-HK Chinese (Simplified Han,Hong Kong) zh-Hans-MO Chinese (Simplified Han,Macao) zh-Hans-SG Chinese (Simplified Han,Singapore) zh-Hant-HK Chinese (Traditional Han,Hong Kong) zh-Hant-MO Chinese (Traditional Han,Macao) zh-Hant-TW Chinese (Traditional Han,Taiwan) zu-ZA Zulu (South Africa) 父主题: 附录
  • WiFi信息模拟 WiFi信息获取 获取WiFi信息示例: WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiConnection = wifiManager.getConnectionInfo(); if (wifiConnection != null) { String bssid = wifiConnection.getBSSID(); } WiFi信息注入 针对当前连接WiFi BSSID,可以通过设置属性com.cph.wifi.bssid进行注入。 举例: setprop com.cph.wifi.bssid 02:00:00:00:00:00
  • 操作步骤 在弹性云服务器上部署STF依赖的相关组件,并借助ADB工具连接云手机,最后通过浏览器访问STF的地址,实现云手机的批量管理。 安装ADB,并验证安装结果。 sudo apt install android-tools-adb android-tools-fastboot adb --version 正确回显版本即安装成功。 图1 ADB安装成功 更新源,然后安装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 正确回显版本即安装成功。 图2 RethinkDB安装成功 RethinkDB官网支持x86架构,对于arm架构仅为实验性支持。 安装ZeroMQ,用于消息传递。 sudo apt-get install libzmq3-dev 图3 ZeroMQ安装成功 安装Protocol Buffers,作为消息传递的数据格式。 sudo apt-get install libprotobuf-dev protobuf-compiler protoc --version 正确回显版本即安装成功。 图4 Protocol Buffers安装成功 安装GraphicsMagick,用于处理图像的读取、写入和操作。 sudo apt-get install graphicsmagick gm version 正确回显版本即安装成功。 图5 GraphicsMagick安装成功 安装pkg-config,用于编译Nodejs第三方库。 sudo apt-get install pkg-config pkg-config --version 正确回显版本即安装成功。 图6 pkg-config安装成功 安装yasm,用于编译STF的依赖库。 sudo apt-get install yasm yasm --version 正确回显版本即安装成功。 图7 yasm安装成功 安装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 正确回显版本即安装成功。 图8 node和npm安装成功 安装STF。 sudo npm install -g cnpm --registry=https://registry.npm.taobao.org sudo cnpm install -g stf stf -V 正确回显版本即安装成功。 图9 STF安装成功 检查STF依赖环境是否满足。 stf doctor 正确回显各组件版本即满足。 图10 STF检测启动环境 基于ADB连接云手机实例,具体连接方式参考ADB连接。 启动RethinkDB。 rethinkdb 回显如图11即启动成功。 图11 启动RethinkDB 基于local模式启动STF,并基于浏览器访问。 ##下方请填写实际的弹性云服务器EIP地址 stf local --public-ip {EIP地址} --allow-remote ##访问方式 http://{EIP地址}:7100/ 默认账户和邮箱请参考STF官方文档:https://github.com/openstf/stf。 图12 输入STF默认账户和邮箱 图13 云手机实例 图14 云手机控制界面
  • 前提条件 已购买一台绑定EIP的云手机服务器。 已购买一台绑定EIP的弹性云服务器。 云手机服务器和弹性云服务器参考以下规格,具体规格可结合业务场景决定。 云手机服务器规格为:physical.kg1.4xlarge.cp | kg1.cp.c60.d16SSD.e1v1 弹性云服务器规格为:通用计算型 | s6.large.2 | 2vCPUs | 4GiB | Ubuntu 18.04 server 64bit(40GB)
  • 发布时间:2022-01-10 镜像ID 新增特性 BUG修复 physical.rx1.xlarge规格的镜像ID: 21120220220105e101110a3000000d6b physical.kg1.4xlarge.cp规格的镜像ID: 21120220220105e201120a2000000ed2 图形处理优化 Logcat日志持久化 修复am restart功能异常 修复dumpsys display功能异常