【问题】
在:
【记录】创建AVD(Android Virtual Device)安卓虚拟设备
过程中,创建AVD过程中,由于界面失去响应:
然后就强制关闭了。
结果再次重新启动ADT后,结果始终无法再次打开对应的Android Virtual Device Manager。
【解决过程】
1。随便折腾其他的,试试能否救回来。。。
去试了试更新:
结果下载要下载半天,所以干脆,取消算了。
2.打算重新从之前的:
adt-bundle-windows-x86_64.zip
解压出来一份,然后覆盖当前的,试试可否恢复Android Virtual Device Manager。
结果覆盖过程中,竟然又遇到权限问题,没法覆盖。
索性,完全删除旧的。
再重新解压一份,重新开始算了。
3.更悲催的是,删除的时候,也遇到了问题,部分东西没法完全删除掉。
好像说是某些东西真正被使用中。
后来才想到,估计是之前强制关闭eclipse,导致某些java的线程没彻底清除所导致此问题的。
所以,去进程中看看去。
发现进程中还有个eclipse.exe呢,强制终止掉。
4.然后重新初始化ADT。
结果由于没有删除之前的项目DownloadSongtasteMusic,然后打开后,就可以看到当前的DownloadSongtasteMusic项目了。
但是结果还是点击Android Virtual Device Manager而无反应。
所以,彻底删除此项目再说。
然后重新打开,结果提示DownloadSongtasteMusic已空,没法打开。
还是残存一些东西,没有彻底清空。
5.所以,再次,把所有的,包括Eclipse的workspace都清除了。
然后重新弄一遍ADT再说。
结果全新的去弄了一遍,结果还是点击Android Virtual Device Manager无反应。
去看了看进程,现在有eclipse.exe和adb.exe
感觉像是当前系统中的eclipse哪方面有问题了。
所以去重新启动电脑,回来再看看是否正常。
6.重新启动电脑后,结果也还是无法启动Android Virtual Device Manager。
试了试直接运行app,弹出提示,没有找到AVD,然后想要去创建,也还是无法调出对应的Android Virtual Device Manager界面。
7.看起来像是,当前Win7中,已经被导入了什么方面的配置,然后该配置被破坏了,所以无论如何换用Eclipse,结果也还是无法打开AVD的管理器了。
但是现在也没法验证。
不过按理来说,Eclipse好像也都是根据当前自己的workspace的内的配置,去管理项目的,包括其ADT内的AVD,所以不应该出现这种问题才对。
8.参考:
Managing AVDs with AVD Manager
去到命令行中试试。
结果出错:
D:\tmp\tmp_dev_root\android\adt-bundle-windows\sdk\tools>android avd java.lang.NullPointerException at com.android.sdklib.internal.avd.AvdInfo.getDeviceName(AvdInfo.java:158) at com.android.sdkuilib.internal.repository.ui.DeviceManagerPage.fillDevices(DeviceManagerPage.java:497) at com.android.sdkuilib.internal.repository.ui.DeviceManagerPage.fillTable(DeviceManagerPage.java:357) at com.android.sdkuilib.internal.repository.ui.DeviceManagerPage.createContents(DeviceManagerPage.java:259) at com.android.sdkuilib.internal.repository.ui.DeviceManagerPage.<init>(DeviceManagerPage.java:130) at com.android.sdkuilib.internal.repository.ui.AvdManagerWindowImpl1.createDeviceTab(AvdManagerWindowImpl1.java:210) at com.android.sdkuilib.internal.repository.ui.AvdManagerWindowImpl1.createContents(AvdManagerWindowImpl1.java:193) at com.android.sdkuilib.internal.repository.ui.AvdManagerWindowImpl1.open(AvdManagerWindowImpl1.java:133) at com.android.sdkuilib.repository.AvdManagerWindow.open(AvdManagerWindow.java:94) at com.android.sdkmanager.Main.showAvdManagerWindow(Main.java:369) at com.android.sdkmanager.Main.doAction(Main.java:311) at com.android.sdkmanager.Main.run(Main.java:119) at com.android.sdkmanager.Main.main(Main.java:102)
参考:
蓝屏重启后,Android SDK AVD 一闪而过,无法启动
去删除用“用户下面.android”目录即可。
所以去找到我此处对应的.android目录:
C:\Users\CLi\.android
然后删除之。
同时发现,一个变态的现象:
.android
这个目录,竟然占用了:
14G
之多!!!
看来,很明显是当初创建AVD的时候,AVD管理器去帮我们创建了对应的sdcard等文件,导致对应的占用如此大的空间。
此处很明显的是:
AVD管理器,并没有告诉我们,或者说并没有提示我们:
(1)会在自己的用户目录下,创建对应的文件;
(2)要创建的文件,是和你当前设置的sdcard,usb存储等大小是挂钩的。
另外:
(3)ADT之前,也没有提示我们,会同时在当前用户下,创建对应的.android文件夹。
由此,导致了,虽然彻底删除了ADT所有的内容,
结果重新用一个新的ADT,却还是会导致无法正常使用ADT(中的AVD)
所以,结论是:
ADT这套系统,还是做得不够人性化,对于很多内部过程,
尤其是像上面三点,应该在文档中提示出来,或者有弹出对话框,和对应的解释。
以引起开发者注意;
否则尼玛,幸亏我C盘够大,否则立刻就被14G大小的AVD占满了,很容易就导致主机挂掉了。
这些细节,难道设计ADT的人没有想到吗???
无语了。
后来,专门去看了看:
D:\to_del\android\.android\avd中有:
- 配置文件:AVD_Samsung_Galaxy_S_II.ini
- 文件夹:D:\to_del\android\.android\avd\AVD_Samsung_Galaxy_S_II.avd
- 中有对应的:
- 14G的sdcard.img
- 4M的userdata.img
所以,目前不能改变ADT的前提下,知道了现在要:
创建AVD的时候,设置SD卡大小,尽量小点,比如256MB之类的,只要够开发测试时候使用,即可。
千万不能搞个多少G,否则:
(如果不是你选择了对应的sdcard文件的话),ADT直接在你的硬盘上创建一个对应的大小sdcard.img,
而且位置是,你当前用户所在的.android文件夹下面的
往往都是C盘 => 导致你C盘空间被占用 => 如果本身C盘空间就紧张 => 主机直接死机/挂掉/蓝屏 了。。。。
对应的,把.android全部干掉后,再次运行:
D:\tmp\tmp_dev_root\android\adt-bundle-windows\eclipse\eclipse.exe
就又出现那个问你是否运行google的统计功能的对话框了。
然后就正常了:
点击AVD manager,就可以弹出对话框了:
【总结】
1.ADT,还是做得不够好,不够人性化;
2.自己创建AVD时,sd卡的容量设置,要么选择一个现存的文件;要么自己设置一个值,不要太大,比如128MB,256MB。
否则如果设置太大,(如果用户文件夹在C盘)导致直接创建一个同样大小的img文件:
C:\Users\用户名\.android\avd\AVD设备名\sdcard.img
从而占用C盘对应大小的空间,可能会导致蓝屏,死机等问题。
转载请注明:在路上 » 【已解决】Android Virtual Device Manager失去响应后,被强制关闭,之后再也无法打开Android Virtual Device Manager