文档¶
PyMemuc
模块¶
一个 memuc.exe 的包装器作为一个库来控制虚拟机
- class PyMemuc(memuc_path: str | None = None, debug: bool = False)[源代码]¶
基类:
object
与 memuc.exe 命令行工具交互以控制虚拟机的类。
- 参数:
- change_gps_vm(latitude: float, longitude: float, vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
更改虚拟机上的 GPS 位置,必须指定虚拟机索引或虚拟机名称
- connect_internet_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
在虚拟机上连接互联网,必须指定虚拟机索引或虚拟机名称
- create_app_shortcut_vm(package_name: str, vm_index: int | None = None, vm_name: str | None = None) Tuple[int, str] ¶
在虚拟机上创建应用程序快捷方式,必须指定虚拟机索引或虚拟机名称
- disconnect_internet_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
断开虚拟机上的互联网连接,必须指定虚拟机索引或虚拟机名称
- execute_command_vm(command: str, vm_index: int | None = None, vm_name: str | None = None) Tuple[int, str] ¶
在虚拟机上执行命令,必须指定虚拟机索引或虚拟机名称
- get_adb_connection(vm_index: int | None = None, vm_name: str | None = None, timeout: float | None = None) Tuple[str | None, int | None] ¶
获取虚拟机的adb连接信息
- 参数:
- 抛出:
PyMemucIndexError -- 如果既未指定虚拟机索引也未指定虚拟机名称,则会出现错误
PyMemucTimeoutExpired -- 如果命令超时则出错
PyMemucError -- an error if the command fails
- 返回:
adb连接的IP和端口,以元组形式返回
- 返回类型:
- get_app_info_list_vm(vm_index: int | None = None, vm_name: str | None = None, timeout: float = 10) list[str] ¶
获取安装在虚拟机上的应用程序列表,必须指定虚拟机索引或名称
- get_public_ip_vm(vm_index: int | None = None, vm_name: str | None = None) Tuple[int, str] ¶
获取虚拟机的公共互联网协议地址,必须指定虚拟机索引或虚拟机名称
- input_text_vm(text: str, vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
在虚拟机上发送输入文本,必须指定虚拟机索引或虚拟机名称
- install_apk_vm(apk_path: str, vm_index: int | None = None, vm_name: str | None = None, create_shortcut: bool = False) Literal[True] ¶
在虚拟机上安装 APK,必须指定虚拟机索引或虚拟机名称
- rotate_window_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
在虚拟机上旋转窗口,必须指定虚拟机索引或虚拟机名称
- 参数:
vm_index (int, optional) -- 虚拟机索引。 默认为 None。
- 抛出:
PyMemucIndexError -- 如果既未指定虚拟机索引也未指定虚拟机名称,则会出现错误
- 返回:
如果虚拟机窗口旋转成功,则为 True
- 返回类型:
Literal[True]
- send_adb_command_vm(command: str | list[str], vm_index: int | None = None, vm_name: str | None = None, timeout: float | None = None) str ¶
向虚拟机发送 ADB 命令,必须指定虚拟机索引或虚拟机名称
- 参数:
- 抛出:
PyMemucIndexError -- 如果既未指定虚拟机索引也未指定虚拟机名称,则会出现错误
PyMemucTimeoutExpired -- 如果命令超时则出错
- 返回:
命令的返回码和输出。
- 返回类型:
- set_accelerometer_vm(value: tuple[float, float, float], vm_index: int | None = None, vm_name: str | None = None) Tuple[int, str] ¶
在虚拟机上设置加速度计值,必须指定虚拟机索引或虚拟机名称
- start_app_vm(package_name: str, vm_index: int | None = None, vm_name: str | None = None, timeout: float | None = None) Literal[True] ¶
在虚拟机上启动应用程序,必须指定虚拟机索引或虚拟机名称
- 参数:
package_name (str) -- Package name of the APK, e.g.
com.android.chrome
. This can be found usingget_app_info_list_vm()
, excluding the readable name and version suffix.vm_index (int, optional) -- 虚拟机索引。 默认为 None。
vm_name (str, optional) -- 虚拟机名称。 默认为 None。
timeout (float, optional) -- Timeout in seconds. Defaults to None.
- 抛出:
PyMemucIndexError -- 如果既未指定虚拟机索引也未指定虚拟机名称,则会出现错误
- 返回:
如果虚拟机应用程序启动成功,则为 True
- 返回类型:
Literal[True]
- stop_app_vm(package_name: str, vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
在虚拟机上停止应用程序,必须指定虚拟机索引或虚拟机名称
- trigger_keystroke_vm(key: Literal['back', 'home', 'menu', 'volumeup', 'volumedown'], vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
在虚拟机上触发击键,必须指定虚拟机索引或虚拟机名称
- trigger_shake_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
在虚拟机上触发震动,必须指定虚拟机索引或虚拟机名称
- uninstall_apk_vm(package_name: str, vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
在虚拟机上卸载 APK,必须指定虚拟机索引或虚拟机名称
- zoom_in_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
放大虚拟机,必须指定虚拟机索引或虚拟机名称
- zoom_out_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
缩小虚拟机,必须指定虚拟机索引或虚拟机名称
- reboot_vm(vm_index: int | None = None, vm_name: str | None = None, non_blocking: bool = False) Literal[True] ¶
重启虚拟机,必须指定虚拟机索引或虚拟机名称
- start_vm(vm_index: int | None = None, vm_name: str | None = None, headless: bool = False, non_blocking: bool = False, timeout: float | None = None) Literal[True] ¶
启动虚拟机,必须指定虚拟机索引或虚拟机名称
- 参数:
- 抛出:
PyMemucIndexError -- 如果既未指定虚拟机索引也未指定虚拟机名称,则会出现错误
- 返回:
如果虚拟机成功启动则为 True
- 返回类型:
Literal[True]
- stop_vm(vm_index: int | None = None, vm_name: str | None = None, non_blocking: bool = False, timeout: float | None = None) Literal[True] ¶
停止虚拟机,必须指定虚拟机索引或虚拟机名称
- 参数:
- 抛出:
PyMemucIndexError -- 如果既未指定虚拟机索引也未指定虚拟机名称,则会出现错误
- 返回:
如果虚拟机已成功停止,则为 True
- 返回类型:
Literal[True]
- clone_vm(vm_index: int | None = None, vm_name: str | None = None, new_name: str | None = None, non_blocking: bool = False) Literal[True] ¶
克隆虚拟机,必须指定虚拟机索引或虚拟机名称
- compress_vm(vm_index: int | None = None, vm_name: str | None = None, non_blocking: bool = False) Literal[True] ¶
Compress a VM, must specify either a vm index or a vm name
- 参数:
- 抛出:
PyMemucIndexError -- 如果既未指定虚拟机索引也未指定虚拟机名称,则会出现错误
PyMemucError -- an error if the vm compress failed
- 返回:
True if the vm was compressed successfully
- 返回类型:
Literal[True]
- delete_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
删除虚拟机,必须指定虚拟机索引或虚拟机名称
- export_vm(vm_index: int | None = None, vm_name: str | None = None, file_name: str = 'vm.ova', non_blocking: bool = False)¶
导出虚拟机,必须指定虚拟机索引或虚拟机名称
- get_configuration_vm(config_key: Literal['name', 'cpus', 'cpucap', 'memory', 'is_full_screen', 'is_hide_toolbar', 'turbo_mode', 'graphics_render_mode', 'enable_su', 'enable_audio', 'fps', 'vkeyboard_mode', 'sync_time', 'phone_layout', 'start_window_mode', 'win_x', 'win_y', 'win_scaling_percent2', 'is_customed_resolution', 'resolution_width', 'resolution_height', 'vbox_dpi', 'linenum', 'imei', 'imsi', 'simserial', 'microvirt_vm_brand', 'microvirt_vm_model', 'microvirt_vm_manufacturer', 'selected_map', 'latitude', 'longitude', 'picturepath', 'musicpath', 'moviepath', 'downloadpath', 'macaddress', 'cache_mode', 'geometry', 'custom_resolution', 'disable_resize', 'ssid'], vm_index: int | None = None, vm_name: str | None = None) str ¶
获取虚拟机配置,必须指定虚拟机索引或虚拟机名称
- list_vm_info(vm_index: int | None = None, vm_name: str | None = None, running: bool = False, disk_info: bool = False) list[VMInfo] ¶
列出虚拟机信息,必须指定虚拟机索引或虚拟机名称
- randomize_vm(vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
Randomize a VM, must specify either a vm index or a vm name
- rename_vm(vm_index: int | None = None, vm_name: str | None = None, new_name: str | None = None) Literal[True] ¶
重命名虚拟机,必须指定虚拟机索引或虚拟机名称
- set_configuration_vm(config_key: Literal['name', 'cpus', 'cpucap', 'memory', 'is_full_screen', 'is_hide_toolbar', 'turbo_mode', 'graphics_render_mode', 'enable_su', 'enable_audio', 'fps', 'vkeyboard_mode', 'sync_time', 'phone_layout', 'start_window_mode', 'win_x', 'win_y', 'win_scaling_percent2', 'is_customed_resolution', 'resolution_width', 'resolution_height', 'vbox_dpi', 'linenum', 'imei', 'imsi', 'simserial', 'microvirt_vm_brand', 'microvirt_vm_model', 'microvirt_vm_manufacturer', 'selected_map', 'latitude', 'longitude', 'picturepath', 'musicpath', 'moviepath', 'downloadpath', 'macaddress', 'cache_mode', 'geometry', 'custom_resolution', 'disable_resize', 'ssid'], config_value: str, vm_index: int | None = None, vm_name: str | None = None) Literal[True] ¶
设置虚拟机配置,必须指定虚拟机索引或虚拟机名称
The ConfigKeys
alias¶
- ConfigKeys¶
Literal
['name', 'cpus', 'cpucap', 'memory', 'is_full_screen', 'is_hide_toolbar', 'turbo_mode', 'graphics_render_mode', 'enable_su', 'enable_audio', 'fps', 'vkeyboard_mode', 'sync_time', 'phone_layout', 'start_window_mode', 'win_x', 'win_y', 'win_scaling_percent2', 'is_customed_resolution', 'resolution_width', 'resolution_height', 'vbox_dpi', 'linenum', 'imei', 'imsi', 'simserial', 'microvirt_vm_brand', 'microvirt_vm_model', 'microvirt_vm_manufacturer', 'selected_map', 'latitude', 'longitude', 'picturepath', 'musicpath', 'moviepath', 'downloadpath', 'macaddress', 'cache_mode', 'geometry', 'custom_resolution', 'disable_resize', 'ssid'] 的别名
配置键 |
配置描述 |
---|---|
|
虚拟机的名称。 |
|
分配给虚拟机的 CPU 数量。 |
|
分配给虚拟机的最大 CPU 使用率。 ( |
|
分配给虚拟机的内存量。 (单位:兆字节) |
|
虚拟机是否应该以全屏模式启动。 ( |
|
虚拟机的工具栏是否应该隐藏。 ( |
|
虚拟机是否应该以涡轮模式启动。 ( |
|
要使用的图形渲染模式。 ( |
|
虚拟机是否应该以超级用户权限启动。 ( |
|
虚拟机是否应以音频支持启动。 ( |
|
虚拟机的每秒帧数。 ( |
|
虚拟机的虚拟键盘模式。 ( |
|
虚拟机是否应以时间同步启动。 ( |
|
虚拟机的电话布局。 ( |
|
虚拟机的启动窗口模式。 ( |
|
虚拟机窗口水平轴偏离左上角。( |
|
虚拟机窗口垂直轴偏离左上角。 ( |
|
虚拟机的窗口缩放百分比。 (单元: %) |
|
虚拟机是否应以自定义分辨率启动。 ( |
|
虚拟机的自定义分辨率宽度。( |
|
虚拟机的自定义分辨率高度。( |
|
虚拟机的虚拟机 DPI。( |
|
虚拟机的电话号码 |
|
虚拟机的 IMEI |
|
虚拟机的 IMSI |
|
虚拟机的 SIM 序列号。 |
|
虚拟机的品牌。 |
|
虚拟机的型号。 |
|
虚拟机的制造商。 |
|
虚拟机选择的 GPS 提供商。 ( |
|
虚拟机的 GPS 纬度。 (单位:学位) |
|
虚拟机的 GPS 经度。 (单位:学位) |
|
虚拟机共享图片路径的目录路径。 |
|
虚拟机共享音乐路径的目录路径。 |
|
虚拟机共享电影路径的目录路径。 |
|
虚拟机共享下载路径的目录路径。 |
|
设备 MAC 地址 |
|
缓存模式,1 表示加速(性能良好,但存在意外断电时图像损坏的风险),0 表示稳定(图像文件不容易损坏,性能略有下降)(1, 0) |
|
模拟器的左上坐标和尺寸(x y 宽度 高度) |
|
Android 分辨率和 DPI(宽度 高度 DPI) |
|
固定窗口大小,1 表示固定,0 表示可伸缩 |
|
WIFI名称(uylnhxb557|auto)(auto 代表自动生成) |