最近升級了AndroidSDK,打開UIAutomatorViewer.bat,結果發現獲取不了Android設備界面上的UI信息。經過一番努力,終於把這個問題解決了,詳細過程如下:
1. Unable to connect to adb.Check if adb is installed correctly.問題:
UIAutomatorViewer.bat位於AndroidSDK\tools\bin路徑下,是個十分常用的自動化測試工具,雙擊運行即可。誰知更新了最新的AndroidSDK之后,運行UIAutomatorViewer.bat就出現了以下錯誤:
Unable to connect to adb.Check if adb is installed correctly.

2. 解決方案
打開uiautomatorviewer.bat,將最后一句%prog_dir%替換成AndroidSDK\tools路徑,保存后再次打開uiautomatorviewer.bat即可得到當前View所有信息。

替換上一句為下面這句:

3. 為什么這么修改就能解決問題了呢?
1) 打開uiautomatorviewer.bat,發現最后一句是關鍵代碼,也許問題就出現在這里。
2) 打印出這最后一句里4個變量,可以得到如圖所示路徑,除了prog_dir,其他3個很顯然都沒有問題。

3) 反編譯uiautomatorviewer-25.3.2.jar,搜索com.android.uiautomator.bindir,在以下文件中找到相應的代碼,
由此可見jar文件里:
A. prog_dir就是這里的toolsDir;
B. Sdk路徑是prog_di的父路徑;
C. adb路徑是prog_di的父路徑下platform-tools文件夾。

再看uiautomatorviewer.bat,prog_dir= D:\android\AndroidSDK\tools\bin,因此
A. toolsDir路徑就是D:\android\AndroidSDK\tools\bin;
B. Sdk路徑是D:\android\AndroidSDK\tools\;
C. adb路徑是D:\android\AndroidSDK\tools\platform-tools,顯然這個路徑並不存在,於是就出現了unable to connect adb。
所以將com.android.uiautomator.bindir設置成AndroidSDK\tools路徑,問題就解決了。
