产生原因:
我是在使用了一段Android Studio后,发现C盘不够用,想将默认的SDK目录换成D盘下的自定义的SDK目录:
新建了ANDROID_SDK_HOME环境变量,值为:D:\AndroidTools\SDK,
然后将C:\Users\Administrator\下的.android移动到了D:\AndroidTools\SDK\下,
结果发现原来创建的虚拟设备出现了Repair Device带一个黄色叹号,View Details看到如下内容:
Name: nexus10_1_API_23
CPU/ABI: Intel Atom (x86)
Path: D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd
Error: User nexus10.1 no longer exists as a device。
或者仅仅改变过avd的路径,
比如将C:\Users\Administrator.android\avd\下的虚拟设备文件nexus10.1_API_23.avd和nexus10_1_API_23.ini,
移动到D:\AndroidTools\SDK.android\avd下时,也会出现上面问题。
或者将别的电脑里新建的AVD文件拷贝到自己电脑里,devices.xml文件找不到拷贝的虚拟设备名称。
解决办法:
移动后需要检查:
- nexus10_1_API_23.ini内容:
avd.ini.encoding=UTF-8
path=D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd ——–确保该路径正确
path.rel=avd\nexus10.1_API_23.avd
target=android-23 config.ini文件内容
avd.ini.encoding=UTF-8
AvdId=nexus10_1_API_23
abi.type=x86
avd.ini.displayname=nexus10.1 API 23
disk.dataPartition.size=800M
hw.accelerometer=yes
hw.audioInput=yes
hw.battery=yes
hw.camera.back=emulated
hw.camera.front=emulated
hw.cpu.arch=x86
hw.dPad=no
hw.device.hash2=MD5:57d559e6d8a8923657e827c6b9f9da0a
hw.device.manufacturer=User
hw.device.name=nexus10.1
hw.gps=yes
hw.gpu.enabled=yes
hw.keyboard=yes
hw.lcd.density=213
hw.mainKeys=no
hw.ramSize=1536
hw.sdCard=yes
hw.sensors.orientation=yes
hw.sensors.proximity=yes
hw.trackBall=no
image.sysdir.1=system-images\android-23\default\x86——–该路径是否存在
runtime.network.latency=none
runtime.network.speed=full
runtime.scalefactor=0.1
sdcard.path=D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd\sdcard.img———-该路径是否正确
skin.dynamic=yes
skin.name=1200x1920
skin.path=1200x1920
snapshot.present=no
tag.display=Default
tag.id=default
vm.heapSize=64若有hardware-qemu.ini文件,最后将该文件也改下,内容如下:
hw.cpu.arch = x86
hw.cpu.model = qemu32
hw.cpu.ncore = 4
hw.ramSize = 1536
hw.screen = multi-touch
hw.mainKeys = false
hw.trackBall = false
hw.keyboard = true
hw.keyboard.lid = false
hw.keyboard.charmap = qwerty2
hw.dPad = false
hw.gsmModem = true
hw.gps = true
hw.battery = true
hw.accelerometer = true
hw.audioInput = true
hw.audioOutput = true
hw.sdCard = true
hw.sdCard.path = D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd/sdcard.img ——该路径是否正确
disk.cachePartition = true
disk.cachePartition.path = D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd/cache.img ——该路径是否正确
disk.cachePartition.size = 66m
hw.lcd.width = 1200
hw.lcd.height = 1920
hw.lcd.depth = 16
hw.lcd.density = 213
hw.lcd.backlight = true
hw.gpu.enabled = true
hw.gpu.mode = host
hw.gpu.blacklisted = no
hw.initialOrientation = Portrait
hw.camera.back = emulated
hw.camera.front = emulated
vm.heapSize = 192
hw.sensors.light = true
hw.sensors.pressure = true
hw.sensors.humidity = true
hw.sensors.proximity = true
hw.sensors.magnetic_field = true
hw.sensors.orientation = true
hw.sensors.temperature = true
hw.useext4 = true
kernel.path = D:\AndroidTools\SDK/system-images\android-23\default\x86\/kernel-ranchu ——该路径是否正确
kernel.newDeviceNaming = yes
kernel.supportsYaffs2 = no
disk.ramdisk.path = D:\AndroidTools\SDK/system-images\android-23\default\x86\/ramdisk.img ——该路径是否正确
disk.systemPartition.initPath = D:\AndroidTools\SDK/system-images\android-23\default\x86\/system.img ——该路径是否正确
disk.systemPartition.size = 1280m
**disk.dataPartition.path = D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd/userdata-qemu.img ——该路径是否正确
disk.dataPartition.initPath = D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd/userdata.img ——该路径是否正确**
disk.dataPartition.size = 2g
avd.name = nexus10.1_API_23.名字要一致:
D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd下的config.ini文件,内容如下:
avd.ini.encoding=UTF-8
AvdId=nexus10_1_API_23
abi.type=x86
avd.ini.displayname=nexus10.1 API 23
disk.dataPartition.size=800M
hw.accelerometer=yes
hw.audioInput=yes
hw.battery=yes
hw.camera.back=emulated
hw.camera.front=emulated
hw.cpu.arch=x86
hw.dPad=no
hw.device.hash2=MD5:57d559e6d8a8923657e827c6b9f9da0a
hw.device.manufacturer=User
hw.device.name=nexus10.1 ——————注意这一属性,C:\Users\Administrator.android\devices.xml里要有该名称的设备tag节点,
没有就会报Error: User nexus10.1 no longer exists as a devicehw.gps=yes
hw.gpu.enabled=yes
hw.keyboard=yes
hw.lcd.density=213
hw.mainKeys=no
hw.ramSize=1536
hw.sdCard=yes
hw.sensors.orientation=yes
hw.sensors.proximity=yes
hw.trackBall=no
image.sysdir.1=system-images\android-23\default\x86\
runtime.network.latency=none
runtime.network.speed=full
runtime.scalefactor=0.1
sdcard.path=D:\AndroidTools\SDK.android\avd\nexus10.1_API_23.avd\sdcard.img
skin.dynamic=yes
skin.name=1200x1920
skin.path=1200x1920
snapshot.present=no
tag.display=Default
tag.id=default
vm.heapSize=64
在SDK目录下,未移动前,默认是在C:\Users\Administrator.android\,指定ANDROID_SDK_HOME环境变量后,
则在你指定的SDK目录下的.android 文件夹里,我这里是D:\AndroidTools\SDK.android,
然后在该目录下找到devices.xml(该文件只有新建过虚拟设备才会有)文件,
查看里面有没有 为nexus10.11的设备tag,如下:
<d:device>
<d:name>nexus10.11</d:name>-------该名称对应config.ini里的hw.device.name=nexus10.1
<d:manufacturer>User</d:manufacturer>
<d:meta/>
<d:hardware>
<d:screen>
<d:screen-size>xlarge</d:screen-size>
<d:diagonal-length>10.10</d:diagonal-length>
<d:pixel-density>tvdpi</d:pixel-density>
<d:screen-ratio>notlong</d:screen-ratio>
<d:dimensions>
<d:x-dimension>1200</d:x-dimension>
<d:y-dimension>1920</d:y-dimension>
</d:dimensions>
<d:xdpi>224.17</d:xdpi>
<d:ydpi>224.17</d:ydpi>
<d:touch>
<d:multitouch>jazz-hands</d:multitouch>
<d:mechanism>finger</d:mechanism>
<d:screen-type>capacitive</d:screen-type>
</d:touch>
</d:screen>
<d:networking>
Bluetooth
Wifi
NFC</d:networking>
<d:sensors>
Accelerometer
Barometer
Compass
GPS
Gyroscope
LightSensor
ProximitySensor</d:sensors>
<d:mic>true</d:mic>
<d:camera>
<d:location>back</d:location>
<d:autofocus>true</d:autofocus>
<d:flash>true</d:flash>
</d:camera>
<d:camera>
<d:location>front</d:location>
<d:autofocus>true</d:autofocus>
<d:flash>true</d:flash>
</d:camera>
<d:keyboard>nokeys</d:keyboard>
<d:nav>nonav</d:nav>
<d:ram unit="GiB">2</d:ram>
<d:buttons>soft</d:buttons>
<d:internal-storage unit="GiB">
4</d:internal-storage>
<d:removable-storage unit="TiB"/>
<d:cpu>Generic CPU</d:cpu>
<d:gpu>Generic GPU</d:gpu>
<d:abi>
armeabi
armeabi-v7a
x86
mips</d:abi>
<d:dock/>
<d:power-type>battery</d:power-type>
</d:hardware>
<d:software>
<d:api-level>-</d:api-level>
<d:live-wallpaper-support>true</d:live-wallpaper-support>
<d:bluetooth-profiles/>
<d:gl-version>2.0</d:gl-version>
<d:gl-extensions/>
<d:status-bar>false</d:status-bar>
</d:software>
<d:state default="true" name="Portrait">
<d:description>The device in portrait orientation</d:description>
<d:screen-orientation>port</d:screen-orientation>
<d:keyboard-state>keyssoft</d:keyboard-state>
<d:nav-state>navhidden</d:nav-state>
</d:state>
<d:state name="Landscape">
<d:description>The device in landscape orientation</d:description>
<d:screen-orientation>land</d:screen-orientation>
<d:keyboard-state>keyssoft</d:keyboard-state>
<d:nav-state>navhidden</d:nav-state>
</d:state>
</d:device>
全部检查、修改、保存后,然后重启Android Studio -》再次打开AVD Manager ,设备正常加载,并且可以正常编辑了。
如果只是修改devices.xml文件,保存后,直接地点击AVD Manager右下角的刷新按钮即可。