UiautomatorViewer源碼(四):解決null root node returned by UiTestAutomationBridge.

Android P新版本出來以後,用uiautomatorViewer工具同步時,經常會報null root node returned by UiTestAutomationBridge.導致快照屏幕失敗。

問題原因並不確認,網上繞了一圈,沒查到個所以然,估摸着,這可能是谷歌的鍋,畢竟人家盛產BUG,這,好吧,我啥都沒說。

言歸正傳,這裏提供一個方案來規避。

經過多次dump嘗試,發現null root node returned by UiTestAutomationBridge.這個問題只是概率性問題,非必現,多嘗試dump幾次的話,便會成功,這就給了我們操作的空間。

思路清晰了,代碼也就差不多到位了。基於UiautomatorViewer源碼(二):持久化 UiautomatorViewer源碼(三):提升快照速度 代碼上,在EasyScreenshotAction類中的內部類MyThread類中,添加了如下代碼:

class MyThread extends Thread {
	public String cmd="";
	public MyThread(String cmdString) {
		this.cmd=cmdString;
	}
	
	public void run() {
		for (int i = 0; i <20; i++) {
			String result="";
			try {  
				cmd = "cmd /c "+cmd;  
				Process p =Runtime.getRuntime().exec(cmd);  
				InputStream is = p.getInputStream();
				BufferedReader reader = new BufferedReader(new InputStreamReader(is));
				String line;    
				while((line = reader.readLine())!= null){
					System.out.println("SucessMsg_"+line);    
					result=result+line;
					
				}    
				is = p.getErrorStream();
				reader = new BufferedReader(new InputStreamReader(is));
				while((line = reader.readLine())!= null){
					System.out.println("ErrorrMsg_"+line);    
					result=result+line;
				}   
				p.waitFor();
				is.close();
				reader.close(); 
				p.destroy();
			} catch (Exception e) {  
				e.printStackTrace();    
			}  
			if (result.contains(" null root")) {
				System.out.println("Fail to dump UI hierarchy, try again , try time count:"+i);
				continue;
			}else {
				System.out.println("Successful to dump UI hierarchy");
				break;
			}
		}  
		
	}
}

這樣,就解決了null root node returned by UiTestAutomationBridge的問題。如果有哪位大神有其他更好的解決方法的話,還望指教,小弟在此先行謝過。

 

總結:

Uiautomatorviewer源碼和二次開發部分,寫了四篇,到此算是暫告一段落了,後續如果有遇到新的問題,並且有了解決方案的話,仍然會更新,所以,可能還有五六七。。

Uiautomatorviewer這部分源碼的開發,其實很早就做了的,只是一直沒有發到博客上。所以可能源碼的版本有點低,我也看過一些比較新的版本的源碼,大體思路都是差不多的,但是代碼風格好像不太一樣了,個人懷疑,不同版本的代碼應該不是同一個人or團隊寫的。這個工具寫完之後,我自己一直在用,組內的其他同事也在用,大都在Android O 和Android P上陸陸續續遇到問題,又陸陸續續想法子解決。感覺已經夠用,所以一直沒有Update到最新的版本。(其實是感覺每次翻牆都有點麻煩。。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章