def start_test(request):
os.system('echo Starting emulator...')
os.system('./android-sdk-linux_x86/tools/emulator -avd testavd &')
return HttpResponse("OK")
以下是我想要做的准系统代码 执行此代码时,服务器在运行模拟器时停止响应。任何帮助表示赞赏 我正在使用django开发服务器。这是服务器输出:
Django version 1.1.1, using settings 'Cloust.settings'
Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Starting emulator...
[21/Apr/2011 02:00:06] "GET /start_test/a.apk/ HTTP/1.1" 200 5
emulator: warning: opening audio output failed
emulator: emulator window was out of view and was recentred
答案 0 :(得分:2)
也许你应该尝试在单独的线程中运行模拟器?
E.g。
import subprocess
thread = threading.Thread(target=subprocess.popen(['./android-sdk-linux_x86/tools/emulator', '-avd', 'testavd', '&'])
thread.start()
答案 1 :(得分:1)
考虑到你正在使用django,你可能需要以某种方式管理模拟器。 在我认为这种情况下,线程并不是一个好的选择。
我建议在这种情况下使用类似http://code.google.com/p/django-tasks/
的内容来研究任务管理答案 2 :(得分:0)
我仍然无法正确解决此问题,但使用subprocess.Popen可以让我在之后的模拟器上执行命令:
print 'Starting emulator...'
subprocess.Popen(['emulator', '-avd', 'testavd'])
os.system('adb wait-for-device')
os.system('Perform whatever adb commands you need')
值得注意的是,这是使用已开始使用sudo的django开发服务器,所以显然这远非理想。
答案 3 :(得分:0)
ADB的一个问题是你需要多个命令才能完成任务 例如:
adb shell
su
cp /data/local/x /data/local/y
exit
adb pull /data/local/y
可以使用python popen和os-system完成吗?尝试下面的例子没有成功..
print 'Starting emulator...'
subprocess.Popen(['emulator', '-avd', 'testavd'])
os.system('adb wait-for-device')
os.system('Perform whatever adb commands you need')
答案 4 :(得分:0)
不知道它是否会对此有所帮助(希望如此)。
我希望模拟器在自动化测试开始之前打开,而某些共振appium不能这样做。 在我的情况下,我需要添加模拟器的完整路径。
check_output(["/Users/{USER_NAME}/Library/Android/sdk/tools/emulator", "-avd", "Pixel_API_26"])
希望它能帮助别人,直到appium解决这个问题。