【发布时间】:2017-03-12 14:52:57
【问题描述】:
所以我想在我的笔记本电脑上使用一个 avd 测试我的 android 应用程序,但使用多个 config.ini 文件来更改 avd 本身的构成。
我创建了多个 avd,并将 config.ini 文件复制到一个单独的文件夹中。
我还写了一个 bash 脚本来
- 循环浏览我的 config.ini 文件
- 将它们一次复制到 avd 文件夹(覆盖最后一个)
- 尝试停止任何当前正在运行的仿真器 (这是我的大问题)
- 启动模拟器
- 在上面运行我的测试(截屏)
- adb 将屏幕截图拉到一个文件夹中
- 从下一个ini文件重新开始
所以我的大部分工作都在工作,但我无法终生停止/启动/重新启动 avd。
我从各种 SO 问题中尝试了多种方法,包括但不限于
- adb 鸸鹋杀
- telnet 杀死
- adb shell 停止
- pgrep emulator -f(查找 pid)然后 kill -9 停止它
似乎没有什么能正常工作,没有锁定我的脚本,也没有留下一些剩余文件,这意味着我无法再次启动模拟器。
这似乎是在多个设备模拟器上运行我的应用程序而无需同时运行它们的好方法,这是我的笔记本电脑永远无法处理的事情(它可能在 3 个一次)
【问题讨论】:
-
如果你先
any_shell_command &然后echo $!你将获得最近放置在后台的作业的进程ID,无论是作为异步命令执行还是使用bg内置,所以如果你使用&启动您的模拟器,然后您可以将它的 pid 保存在某处,然后再将其杀死 -
@pskink - 每当我杀死时,它通常会引导我在 avd 文件夹中使用 .lock 文件,这意味着我无法再次重新启动该模拟器
-
试过不同的信号? (杀死 -l)
-
但老实说,telnet 会话中的
adb emu kill或kill在这种情况下要好得多......他们还会留下 .lock 文件吗? -
他们没有,但是当我运行 adb devices 模拟器仍然列出时,它实际上并没有被删除,而且我认为实际的模拟器并没有在屏幕上关闭,它似乎只是崩溃,并且仍然可见,但工具栏的东西已经消失了。如果我查看 ps aux 似乎有某种模拟器崩溃解决程序正在运行,但它只是被锁定
标签: android bash android-emulator avd