1. 程式人生 > >Android SDK的預設目錄導致的AVD啟動時各種找不到

Android SDK的預設目錄導致的AVD啟動時各種找不到

各位,有木有被下面各種啟動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是出於什麼原因造成這樣的現象,還是我遺漏了什麼問題,期待有大神能解答我的疑惑。