2013年6月24日 星期一

SDK Manager (不能用\無法正常啟動\閃退)

開發 Android 需要安裝的其中的 "SDK" ,大部份都會透過 SDK Manager 這套工具來輔助,

大概有三種方式可以讓 SDK Manager 開始運行。

1.從 http://developer.android.com/sdk/index.html 直接下載安裝檔,圖中紅色框框的檔案,然後執行它,通常這種方式安裝完就可以用了

2.另一個方式就是下載黃色框框的檔案,這是一個解壓縮的文件,其中包含了 SDK Manager,ADV Manager這兩套工具,因為不是透過安裝程序,所以有些設定需要
自己手動設定,否則SDK Manager會無法正常運行(ex.閃一下之後就沒有反應)。

在設定之前先簡單說明一下
SDK Manager 會呼叫 同目錄下的 \tools\android.bat
android.bat 會呼叫 \tools\lib\find_java.bat
find_java.bat 會呼叫 find_java.exe 而 find_java.exe 去取得 java.exe 及 javaw.exe的檔案路徑。

然後循這路徑將 java.exe,javaw.exe的檔案路徑回傳到Android.bat,並啟動SDK Manager,
通常會發生閃一下就無法運行是因為由 find_java.exe回傳的路徑不正確 (註一),或是
find_java.bat 無法正常呼叫 find_java.exe(註二),而導致上層的Android.bat無法取得正確
的Java.exe(Javaw.exe)路徑來啟動SDK Manager。

處理的方法:
直接修改 Android.bat中
rem Check we have a valid Java.exe in the path.
set java_exe= C:\Program Files\Java\jdk1.7.0_15\jre\bin\java.exe
REM call lib\find_java.bat
REM if not defined java_exe goto :EOF

※ REM:把該行註解掉
※ set java_exe = 你自己安裝的jdk下的java.exe的路徑
< 在 java_exe= 後面的路徑,不要加雙引號 >

3.第三種方法就是直接下載 ADT Bundle已經內含 Eclipse 及 SDK,ADT 等工具,如果需要設定了話,可以再參考第 2 點的內容做修正

<註一>通常在安裝某些軟體的時候也會用到java.exe這個檔案,通常會放在Windows\system32下,但這個java.exe的版本未必跟你 jdk 的版本一致,所以引用這個版本的java.exe會無法正常
啟動SDK manager,這裡有一種處理方式是直接把 java.exe 刪掉,讓find_java.exe去引用其他
正確的java.exe,但因為(↓參考路徑)
Windows\system32\java.exe
C:\programFile\java\jre\java.exe
C:\programFile\java\jdk\jre\java.exe
都有可能被引用到,所以可能引用到 java\jre\java.exe 中也是不適用的java.exe,個人是比較不建
議用刪除的方式,直接改 Android.bat的路徑可能比較快

<註二>在測試的過程有遇到 find_java.bat 這個檔案在 win7 64bit 無法正常執行
有查到一種方法是將 find_java.bat 中的
   /f %%a in ('%~dps0\find_java.exe -s -w') do set javaw_exe=%%a
改成
  /f %%a in ('%~dps0\find_java.exe -w') do set javaw_exe=%%a
不過這個對我沒用

<註三>
遇到這種閃一下就沒反應還有一些其他的解法,像是設定環境變數(Path)之類的,推想是因為在Bat檔中有用到Set,設環境變數的原因在於可以預先給定一個值,讓 Bat 如果不能正常讓他 Set 的值正常抓取的情況下,能夠有一個值能用(已設定的環境變數),讓SDK Manager可以正常啟動。



1 則留言: