使用-noaudio选项运行Android模拟器将返回" qemu-system-i386.exe:-audio:无效选项"

时间:2016-10-26 22:07:25

标签: android audio sdk android-emulator avd

  1. 我正在运行Windows 10,64位Android Studio 2.2.2。从Android SDK的AVD Manager创建AVD时,我没有看到完成禁用音频(输入和输出)的选项。我使用Android SDK,其中包含Android Tools 25.2.2版本。在较旧的AVD管理器中,我记得存在完全禁用AVD音频的选项。
  2. 如果要创建批处理脚本,要使用-noaudio选项运行,如Google官方Control the Emulator from the Command Line页面所述,我将{{}}命令运行1}},但它会抛出错误
  3.   

    emulator.exe -avd Nexus_4 -noaudio

    1. Android模拟器对话框打开,进度条不确定,AVD根本无法启动。永远保持装载。
    2. 感谢任何帮助。

3 个答案:

答案 0 :(得分:11)

我在Linux上测试了这个。 (对于Windows结帐评论或@Tekk回答)
如果你不想要音频,只需使用:

export QEMU_AUDIO_DRV=none && emulator -avd Nexus_4

TL; DR

Quote from here

  

基于一些挖掘,看起来QEMU2取消了完全禁用音频的能力 - 您可以指定音频通过的声卡,但不能完全关闭它。 “-audio”标志被替换为“-soundhw”,它允许我们指定使用哪个声卡。

     

QEMU1(使用“-engine classic”模拟器命令行标志)在传递“-noaudio”时有效,但是将“-soundhw none”传递给QEMU2也会失败。

<强>解决方案:

Post about emulated audio devices

在Linux上,如果我想要声音我使用:

export QEMU_AUDIO_DRV=pa && emulator.orig -avd Nexus_S_api_23

工作正常。此外,我没有100%的CPU使用率

My snippet

#!/bin/bash
# http://stackoverflow.com/a/35822173/1052261
# http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in

SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

#echo "DIR is '$DIR'"
#If you want audio pass QEMU_AUDIO_DRV=pa -> https://www.wagner.pp.ru/fossil/vws/wiki?name=QEMU+audio
export QEMU_AUDIO_DRV=none && $DIR/emulator.orig -use-system-libs "$@" -qemu -m 512 -enable-kvm

只需将Android-sdk/tools/emulator替换为Android-sdk/tools/emulator.orig 然后在Android-sdk/tools/emulator中创建具有上述源的脚本(允许执行)。

请记住,有时当android sdk升级时会删除此脚本;)

答案 1 :(得分:1)

感谢@Dawid Drozd的回答,我创建了一个Windows批处理脚本,它将在没有声音输入/输出的情况下运行AVD。只需为脚本提供AVD名称的参数。

诀窍是在执行AVD之前运行set QEMU_AUDIO_DRV=none

@echo off
if "%1"=="" goto usage
set QEMU_AUDIO_DRV=none
@echo Running AVD "%1" without sound...
@echo.
%ANDROID_HOME%\tools\emulator.exe -avd %1
goto :eof

:usage
@echo.
@echo -----------------------------------
@echo Usage: %0 ^<avd-name^>
@echo -----------------------------------
@echo.
@timeout 3 >0
exit /B 1

答案 2 :(得分:0)

这是我的看法:

$ cd /opt/android-sdk/emulator 
$ mv emulator{,.orig}
$ cat <<EOF > emulator
heredoc> #!/bin/sh
heredoc> 
heredoc> QEMU_AUDIO_DRV=none `dirname $0`/emulator.orig "$@"
heredoc> EOF
$ chmod +x emulator