各位,有木有被下面各种启动AVD报错的问题纠结到:
PANIC: Could not open: ANDROID_SDK_HOME=D:/android-sdk-windows/tools\.android/avd/aa.ini
=======================================
PANIC: ANDROID_SDK_HOME is defined but could not find Test.ini file in $ANDROID_SDK_HOME\.android\avd
==================================
PANIC: HOME is defined but could not find Test.ini file in $HOME\.android\avd
==================================
类似的错误各种搜索也能找到一堆解决方案,可能在大多数情况下都能解决,可惜很不幸,我遇到了极少数情况,所有搜索引擎找到的答案都无法解决,包括中文的和英文的。
我遇到的是上面三种中的第三种。
和前面的是不是很像。但是还是有差别的:一个是HOME,一个是ANDROID_SDK_HOME,而后而要找的文件却是一样的文件。
我的环境:
win8.1
android-studio1.0
sdk manager 24
网上找到的答案无非是设置环境变量,涉及到的环境变量主要有:ANDROID_SDK_HOME、ANDROID_AVD_HOME、ANDROID_SDK
这个设置就不说了,也有回复说环境变量要加上$符号,也就是说设置环境变量的时候变量名为:$ANDROID_SDK_HOME.
而我遇到的错误提示是$HOME,那么是不是代表我需要配置的变量是$HOME呢,非常不幸,各种配置全部试遍全都不行。
====================纠结的分割线=======================
这里不得不提一下win8用户文件夹的问题。默认情况下win8的默认文件夹是放在C:\Users\yaolei\中的。
大家也都知道这个文件夹的数据膨胀极度恶心,很多人都用乾坤大挪移大法将其搬家,不过都非常麻烦,搬家的过程中也常常出现各种问题,我比较懒,使用win8自带的小搬家功能,将桌面、文档、下载等几个目录转移到了D盘。就是这样一个不经意的操作给我带来了麻烦。
于是乎我的电脑中一些用户文件夹的结构变成了下面这样子:
用户文件夹:c:\users\yaolei
桌面文件夹:d:\document\desktop
下载文件夹:d:\document\download
经过多次试验,我发现这样一个现象:
当我用AVD Manager创建一个avd时,avd的目录存放在了:d:\document\.android\avd目录中。
注意:一般情况下android的各种工具会在用户文件夹下创建一个类似.android的文件夹,也就是说会放在c:\users\yaolei\.android目录
按照这个习惯创建的avd不应该是在c:\users\yaolei\.android\avd目录中么,怎么会跑到了d:\document\.android\avd文件夹呢?
在这种情况下启动avd的时候始终报错、找不到$HOME\.android\avd,各种baidu、google都无法找到答案,当发现了上面的现象后,我把d:\user\.android\avd文件夹中的内容复制到了c:\users\yaolei\.android\avd目录中,再次打开avd Manager,点击start后,居然启动了。
Why?
于是再做了一个实验,将桌面文件夹从d:\user\desktop重新移回到了c:\users\yaolei\desktop文件夹。
再次使用AVD Manager创建avd,创建完成后发现avd的默认路径神奇的变成了c:\users\yaolei\.android\avd目录
这时再启动AVD,一切正常。。。。。。
法克,我有种想骂人的冲动。
===========================================================
原来在AVD Manager看来,$HOME目录其实不是用户文件夹(即:c:\users\yaolei),而是”windows桌面的实际路径/..“,注意最后面还有一个..,这代表的是上一级目录,而%USERPROFILE%在windows系统中指用户文件夹根目录,也就是c:\users\yaolei,这要样一来,如果你的桌面路径和用户文件夹没有在一起的话,很不幸,无论怎么样设置环境变量,你都是无法正常使用AVD的。
换句话说,AVDManager创建AVD的时候使用的是“桌面/..”为默认路径,而执行的时候却使用%USERPROFILE%作为默认路径,查阅了一些资料发现如下命令:
创建一个新的AVD:android create avd -n GPhone -t 6 -c 52M -p C:\AVD\ -s QVGA
运行指定的AVD:emulator -avd GPhone
从这儿可以看到创建和运行是两套程序,其中的第一个android是一个bat文件,而emulator是一个exe文件,都放在android-sdk\tools文件夹中,我并没有深入研究这其中的机制是什么,同时我在解决上面的问题时也尝试使用了配置环境变量的办法,都没能解决。
不知道android是出于什么原因造成这样的现象,还是我遗漏了什么问题,期待有大神能解答我的疑惑。