作為日常工作,常常要使用Android SDK附帶的hierarchyviewer、uiautomatorviewer、ddms等工具,剛好碰上Android L發布,並且更新了Android Stutio 1.0,SDK也伴隨著進行了大幅度更新,包括uiautomatorviewer等在內的工具都有了新版本。於是昨天下了新版本過來,安裝上去,接著重新設定了環境變數等一系列東西,然後開啟uiautomatorviewer,竟然提示出錯:
‘-v’ 不是內部或外部命令,也不是可啟動並執行程式
或批次檔。
無效路徑
ERROR: SWT folder ” does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
莫非是我環境配置有問題?Google了一下,發現大部分答案都是讓設定ANDROID_SWT的環境變數,或者吧jdk移動到PATH的第一個云云的奇怪辦法,所以試了半天放棄了,還是安心調試調試看看咋回事。
把uiautomatorviewer.bat的第一行@echo off加冒號”:”注釋掉,然後運新一下,看輸出:
C:Usersxxx.xxx>rem Copyright (C) 2012 The Android Open Source Project ...... C:Usersxxx.xxxAppDataLocalAndroidsdktools>rem Check we have a valid Java.exe in the path. C:Usersxxx.xxxAppDataLocalAndroidsdktools>set java_exe= C:Usersxxx.xxxAppDataLocalAndroidsdktools>call libfind_java.bat SWT folder '' does not exist. Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
C:Usersxxx.xxx>rem Copyright (C) 2012 The Android Open Source Project
......
C:Usersxxx.xxxAppDataLocalAndroidsdktools>rem Check we have a valid Java.exe in the path.
C:Usersxxx.xxxAppDataLocalAndroidsdktools>set java_exe=
C:Usersxxx.xxxAppDataLocalAndroidsdktools>call libfind_java.bat
SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
運行到call libfind_java.bat這一行出問題鳥~~
接著摸出來find_java.bat,注釋掉第一行的 @echo off,看輸出:
...... for /F "delims=" %a in ('"C:Usersxxx.xxxAppDataLocalAndroidsdktoolslibfind_java32 .exe" -s') do set java_exe=%a ......
......
for /F "delims=" %a in ('"C:Usersxxx.xxxAppDataLocalAndroidsdktoolslibfind_java32 .exe" -s') do set java_exe=%a
......
find_java32 .exe是什麼鬼……
開啟find_java.bat的代碼,可以看到27行這裡
for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a
for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a
就是本尊了,往上翻到arch_ext:
find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64
find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64
那個空格應該是這裡了,可能是工程師們java寫多了,bat裏手也瓢了,把前後的空格去掉試試~~
find /i "x86" > NUL && set arch_ext=32||set arch_ext=64
find /i "x86" > NUL && set arch_ext=32||set arch_ext=64
關掉cmd,重新開啟,新版的uiautomatorviewer出現鳥~~接著測試一下其他需要用到call libfind_java.bat的工具(tools裡的幾乎都要用吧),都沒問題了。