由于缺少设置,使用avdmanager创建的AVD不再启动

时间:2018-05-31 19:47:03

标签: android avd

运行sdkmanager --update后,我无法再使用avdmanager成功启动使用以下图片创建的AVD:

  • system-images;android-27;google_apis;x86
  • system-images;android-26;google_apis;x86

但是,我可以使用system-images;android-25;google_apis;x86图像。或者,如果使用Android Studio创建,则使用上述图像创建的模拟器将每次都有效。

使用avdmanager创建时,我正在运行:avdmanager create avd -n TEST_1234 -k 'system-images;android-27;google_apis;x86' -d 'Nexus One' -f

我试图在不指定设备的情况下运行它,并且还使用-c选项指定初始sdcard大小,但没有任何组合可以解决问题。

当尝试使用模拟器启动其中一个AVD时,它似乎陷入循环,反复输出以下内容:

emulator: onGuestSendCommand: [0x7f0b315d2730] Adb connected, start proxing data
emulator: onGuestClose: [0x7f0b315d2730] Adb closed by guest
emulator: onGuestClose: [0x7f0b317a33e0] Adb closed by guest
emulator: onGuestSendCommand: [0x7f0b29741ac0] Adb connected, start proxing data
emulator: onGuestClose: [0x7f0b29741ac0] Adb closed by guest
emulator: onGuestClose: [0x7f0b2b8a3780] Adb closed by guest
emulator: onGuestSendCommand: [0x7f0b301518a0] Adb connected, start proxing data
emulator: onGuestClose: [0x7f0b301518a0] Adb closed by guest
emulator: onGuestClose: [0x7f0b3121f540] Adb closed by guest
emulator: onGuestSendCommand: [0x7f0b30d3a700] Adb connected, start proxing data
emulator: onGuestClose: [0x7f0b30d3a700] Adb closed by guest
emulator: onGuestClose: [0x7f0b3052cbc0] Adb closed by guest

同样,如果我在使用终端avdmanager创建AVD后在Android Studio中启动AVD管理器,它将不允许我启动它们(没有错误消息,只是在按下播放按钮时没有响应)

我应该选择打开"编辑设备"窗口,在Android Studio中,不对其进行任何更改,然后单击保存按钮将允许我启动它。

执行此操作会更改AVD的配置文件,我认为该文件负责启动工作。

使用avdmanager创建时,config.ini文件如下所示:

PlayStore.enabled=false
abi.type=x86
avd.ini.encoding=UTF-8
hw.accelerometer=yes
hw.audioInput=yes
hw.battery=yes
hw.cpu.arch=x86
hw.dPad=no
hw.device.hash2=MD5:0250c2773d1dd25bb2b12d9502c789f7
hw.device.manufacturer=Google
hw.device.name=Nexus One
hw.gps=yes
hw.lcd.density=240
hw.lcd.height=800
hw.lcd.width=480
hw.mainKeys=yes
hw.sdCard=yes
hw.sensors.orientation=no
hw.sensors.proximity=yes
hw.trackBall=yes
image.sysdir.1=system-images/android-27/google_apis/x86/
tag.display=Google APIs
tag.id=google_apis

在Android Studio中进行编辑后,或通过Android Studio创建时,它将如下所示:

AvdId=TEST_1234
PlayStore.enabled=false
abi.type=x86
avd.ini.displayname=TEST 1234
avd.ini.encoding=UTF-8
disk.dataPartition.size=800M
fastboot.forceColdBoot=no
hw.accelerometer=yes
hw.arc=false
hw.audioInput=yes
hw.battery=yes
hw.camera.back=none
hw.camera.front=none
hw.cpu.arch=x86
hw.dPad=no
hw.device.hash2=MD5:0250c2773d1dd25bb2b12d9502c789f7
hw.device.manufacturer=Google
hw.device.name=Nexus One
hw.gps=yes
hw.gpu.enabled=yes
hw.gpu.mode=guest
hw.initialOrientation=Portrait
hw.keyboard=no
hw.lcd.density=240
hw.lcd.height=800
hw.lcd.width=480
hw.mainKeys=yes
hw.ramSize=512
hw.sdCard=yes
hw.sensors.orientation=no
hw.sensors.proximity=yes
hw.trackBall=yes
image.sysdir.1=system-images/android-27/google_apis/x86/
runtime.network.latency=none
runtime.network.speed=full
sdcard.size=100M
showDeviceFrame=no
skin.dynamic=yes
skin.name=480x800
skin.path=_no_skin
skin.path.backup=_no_skin
tag.display=Google APIs
tag.id=google_apis
vm.heapSize=16

在完成这些设置的差异后,我发现如果我使用avdmanager创建一个新的AVD,然后将以下行添加到新创建的配置文件中,它将成功启动:

disk.dataPartition.size=800M

因此,似乎这是Android Studio添加的核心设置,这使得AVD可以从Android Studio使用,而不是avdmanager

有谁知道如何强制avdmanager设置此项?我看不到任何选项,但如果不设置此项,则无法使用avdmanager自行创建AVD。

1 个答案:

答案 0 :(得分:3)

问题解决了 - 发现了麻烦的设置后,我设法找到了一个可以在启动emulator时使用的参数,允许指定它:-partition-size

使用emulator -avd TEST_1234 -partition-size 800 -verbose启动模拟器将解决此问题,并将成功启动使用较新图像创建的模拟器。