You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打包可执行文件运行多个headless AVD并实现预安装应用、自动点击?

最优实现方案

这套需求无需依赖Eclipse/Android Studio等IDE,用Python+Android官方命令行工具即可全流程脚本化,最终打包单EXE分发,具体实现步骤如下:

1. 基础环境准备

仅需下载Android SDK命令行工具包,提取三个核心工具即可:

  • avdmanager:用于创建基础AVD镜像
  • emulator:用于启动AVD实例
  • adb:用于设备控制、操作下发
    提前创建1个基础AVD,手动安装好你需要的目标应用(如Cookie Clicker),完成初始配置后保存为固定快照,后续所有多开实例都直接加载该快照,完全跳过开机引导、应用安装流程。

2. 多Headless AVD批量启动

启动时添加-no-window参数即可开启无GUI的headless模式,多开时为每个实例分配唯一端口避免冲突,单实例启动命令参考:
emulator -avd <你的基础AVD名称> -no-window -snapshot <你预存的快照名> -port 5554 -no-audio -no-boot-anim -no-snapshot-save
参数说明:

  • -snapshot 指定加载预装好应用的快照,启动速度最快可压缩到10秒内
  • -no-snapshot-save 关闭实例运行时的快照写入,避免修改基础预配置
  • 端口按顺序递增即可,如第二个实例用5556,第三个用5558,以此类推
    脚本中可通过adb devices轮询检测实例状态,确认所有AVD完全启动后再执行后续操作。

3. 多设备批量自动点击

所有点击操作直接通过adb指令下发,无需在AVD内安装额外辅助程序:

  • 单设备单点点击命令:adb -s <设备序列号> shell input tap <x坐标> <y坐标>
  • 设备序列号对应启动时的端口,格式为emulator-xxxx,比如端口5554对应序列号为emulator-5554
  • 提前在开启GUI的测试AVD中打开开发者选项的「指针位置」功能,即可直接获取需要点击的坐标值
  • 脚本逻辑中遍历所有已启动的AVD序列号,循环下发点击指令即可实现全设备同步操作。

4. 打包为单可执行文件

整套控制逻辑用Python实现后,通过PyInstaller即可直接打包为单EXE文件:

  • 将Android命令行工具的核心组件作为资源打包到EXE内,运行时自动临时配置环境变量,用户无需提前安装Android SDK即可直接运行
  • 打包命令参考:pyinstaller -F -w <你的脚本文件名>.py
  • -w参数用于关闭控制台黑框,如果你需要输出运行日志可以去掉该参数。

优化建议

  • 每个headless AVD大约占用2核CPU、3-4G内存,多开数量不要超过主机硬件承载上限
  • 可添加异常检测逻辑,识别崩溃的AVD实例后自动重启加载快照,无需人工干预

内容的提问来源于stack exchange,提问作者itolj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:54:08