標籤:android style blog http color io 使用 java ar
背景:最近在使用Robotium進行Android自動化測試。遇到了一個問題:我需要獲得一個View的id(int型數值)。此前我在http://maider.blog.sohu.com/255448342.html和http://maider.blog.sohu.com/255485243.html兩篇文章中講述了如何開啟手機上的View Server來使用HierarchyViewer。HierarchyViewer對查看UI組件固然有協助,但要想擷取一個元素的id還是不行的。請看:我在HierarchyViewer中查看“發布”這個View,HierarchyViewer顯示了一個
@414a54c8和
id/flipper_head_action。注意:@後加一串16進位數並不是這個view的id,而只是一個對我們人類沒有任何意義的指標值。 但是我們有這個元素的id名flipper_head_action。我們需要按圖索驥,按這個id名找到對應的數值。
解決步驟:1.下載反編譯器
dex2jar,和一個java原始碼查看器
jd-gui:https://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.13.zip&can=2&q=https://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=2.解壓第一步下載的東西,放在適當檔案夾。3.將要反編譯的apk檔案尾碼改為zip並解壓,得到其中的classes.dex,它就是java檔案編譯再通過dx工具打包而成的,將classes.dex複製到第2步解壓得到的
dex2jar.bat所在檔案夾。4.將命令列定位到
dex2jar.bat所在檔案夾,運行命令:
dex2jar.bat classes.dex在同檔案夾下產生:
classes_dex2jar.jar5.開啟第二步解壓得到的
jd-gui.exe,File-》Open File開啟第四步產生的classes_dex2jar.jar6.現在在jd-gui中的左側導航中,定位到APP所在的包吧!(這個包名,你在HierarchyViewer裡能看得到)。例圖:
7.滾動jd-gui的左側導覽列至較下方,可以看到反編譯出的R檔案。而其中有一個R$id就是我們要找的檔案。8.現在,在R$id檔案中,搜尋本文開始得到的元素id名字吧(flipper_head_action),我們得到了這個元素的id的int值為2131427472。大功告成! 本篇文章參考了:http://blog.csdn.net/sunboy_2050/article/details/6727581
[轉]結合HierarchyViewer和APK檔案反編譯獲得APP元素id值